Mendapatkan "tidak dapat menemukan Simbol" dalam proyek Java di Intellij

99

Saya melakukan panggilan ini ke instance tunggal statis dari kelas GameManager.java.

HUD.getInstance().update(timeDelta);

HUD.javaberisi HUDkelas serta dua kelas terkait lainnya, HUDTextElementdan HUDElement. Semua kelas berada di jalur root yang sama ../src/org/mypackage.

Namun, ketika menyusun proyek java ini di IntelliJ, saya tidak dapat menemukan Simbol HUD di saluran yang saya HUD.getInstance()panggil.

Kode yang sama persis dikompilasi dengan baik di gerhana, tahu apa masalahnya?

joe
sumber
1
Apakah Anda memiliki kelas HUD yang diimpor di keduanya?
Alex Coleman
ini adalah satu-satunya solusi untuk masalah ini yang berhasil untuk saya stackoverflow.com/a/56473166/8660553
Sahil SInghal

Jawaban:

172

Pilih Build-> Rebuild Project akan menyelesaikannya

tiboo
sumber
20
Catatan untuk noobs lengkap untuk Java / IntelliJ: di atas berbeda dari "Build Project"
hiljusti
4
@JustinHill - Saya berpengalaman dengan gerhana dan baru mengenal IntelliJ. Dapatkah Anda membantu saya sehubungan dengan apa perbedaan antara keduanya dan poin / tautan apa pun yang membantu saya menyelesaikan waktu saya dengan IntellJ.
nanosoft
1
Saya mungkin sumber daya yang lebih buruk daripada pencarian google, saya belum pernah menggunakan Eclipse. Komentar saya hanyalah bahwa "Rebuild Project" dan "Build Project" adalah opsi yang berbeda (saya membantu seseorang yang menemukan ini dan mereka tidak melihat perbedaan di antara opsi tersebut)
hiljusti
1
Mengapa ini berhasil? Memvalidasi cache dan memulai ulang bahkan tidak berhasil.
b15
Berhasil .... Mencoba menjalankan "kompilasi bersih maven" tetapi itu tidak menyelesaikan masalah
Omtara
54

Saya mengalami masalah yang sama, dan ternyata saya belum pernah sepenuhnya menyusun proyek baru. Jadi mengklik kanan dan memilih Compile '' (shift-cmd-F9 di mac) memperbaikinya. Tampaknya kompilasi pada penyimpanan tidak 'melihat' file yang tidak dikompilasi.

Menandai folder src sebagai sumber tidak membantu dalam kasus saya.

Sjoerd K
sumber
45

Saya memiliki masalah yang sama dan memperbaikinya dengan mengklik File> Invalidate caches / restart

ganninu93.dll
sumber
1
Hati-hati - jika Anda memiliki perubahan dan mereka tidak berkomitmen, mereka akan hilang. :)
Nikola
6
Cache yang tidak valid tidak mengakibatkan perubahan yang hilang. Saya bahkan tidak yakin bagaimana itu akan berhasil. Jika Anda menyimpan file, itu disimpan, terlepas dari cache IntelliJ atau melakukan ke repositori.
Christopher Schneider
Selamatkan hidupku, Terima kasih.
Jadson Santos
29

Ini kemungkinan besar karena folder ../src Anda tidak ditandai sebagai folder "sumber" di Intellij IDEA, jadi ia tidak tahu untuk mencarinya untuk menemukan kelas Anda. Anda dapat mengklik kanan folder di penjelajah proyek dan memilih "tandai sebagai folder sumber" untuk memperbaikinya.

Paul Sanwald
sumber
1 adalah kemungkinan, tetapi bukankah 2 tidak akan memberinya kesalahan yang mengatakan tidak dapat menemukan HUD, melainkan kesalahan yang mengatakan tidak memiliki metode getInstance / update?
Alex Coleman
opsi ini sepertinya hilang.
clankill3r
Tidak, itu berubah menjadi opsi popup: "Mark Directory As>"
Dracontis
Src saya berisi folder uji di dalam, dan multi modul, setelah menandainya sebagai Root Sumber masalah saya adalah yang terburuk.
Se Song
Bagi saya ini mendekati jawaban yang benar. Root sumber saya sudah ditandai, tetapi saya harus "Hapus Tanda sebagai Root Sumber" dan kemudian menandainya sebagai root Sumber lagi untuk memperbaiki kesalahan.
yanni
26

Saya mendapatkan kesalahan "tidak dapat menemukan simbol" yang sama ketika saya menemukannya Build -> Make Project. Saya memperbaikinya dengan menghapus /targetfolder Maven saya , mengklik kanan modul proyek saya dan melakukan Maven -> Reimport, dan melakukan Build -> Rebuild Project. Ini ada di IntelliJ Idea 13.1.5.

Ternyata Maven -> Reimportitu kuncinya, karena masalah itu muncul kembali beberapa kali sebelum akhirnya saya melakukannya.

Christian Wilkie
sumber
12

Terima kasih atas bantuannya sejauh ini, ternyata perbaikannya adalah dengan mengkompilasi HUD.java terlebih dahulu (klik kanan pada file-> Compile HUD.java). Setelah mengkompilasi file java, sisa proyek dapat dikompilasi tanpa masalah.

Saya tidak benar-benar tahu mengapa ini memperbaikinya, atau mengapa IntelliJ tidak melakukan ini secara otomatis, tetapi kesalahan root tampaknya ada hubungannya dengan IntelliJ yang tidak menangani dengan benar memiliki banyak kelas dalam satu file .java.

joe
sumber
1
IntelliJ dapat menangani banyak kelas dalam satu file dengan baik, hanya perlu memastikan bahwa file tersebut telah dikompilasi di beberapa titik.
Makoto
Ya, kecuali bahwa saya baru saja mengalami masalah yang sama dengan satu file kelas. Anehnya, itu telah berjalan tepat baik-baik saja sebelum aku berlari perintah maven ini: mvn com.zenjava:javafx-maven-plugin:2.0:fix-classpath. Ini dimaksudkan untuk memindahkan jar javafx dari direktori libs ke direktori ext untuk JDK saat ini. Saya menemukannya di sini .
nihilon
7

Saya harus mengklik kanan proyek tersebut, dan memilih "Impor ulang" di bawah submenu "Jalankan Maven".

bitsmcgee77
sumber
6

Bagi saya - Saya mencoba langkah-langkah ini (Invalidate Cache & Restart, Maven Reimport)) tetapi tidak berhasil. Jadi saya menghapus .idea, .settingsdan .projectfolder dan mencoba - itu bekerja.

R11G
sumber
3
Menghapus .ideafolder melakukannya untuk saya.
Daniel D.
5

Saya menggunakan maven dalam proyek saya. Untuk beberapa alasan IntelliJ memberi saya kesalahan aneh semacam ini. Saya menjalankan mvn bersih dan mencoba sinkronisasi ulang dan kesalahan ini menghilang.

Moiz Raja
sumber
1
bersih adalah siklus hidup pakar. Anda menggunakannya jika Anda ingin membersihkan semua file output yang telah dibuat oleh proyek maven.
Moiz Raja
4

Ini terjadi pada saya ketika saya menghapus folder dan kemudian menyalin-tempelkannya kembali ke proyek.

Right-click project folder -> Rebuild bekerja untuk saya.

Tomas Lukac
sumber
3

Saya menghadapi masalah yang sama, dan ada banyak solusi yang diberikan dalam jawabannya, mencoba semua solusi ini membutuhkan waktu cukup lama, jadi di sini saya ingin mengusulkan pendekatan metodis jika Anda mendapatkan kesalahan ini.

Periksa hal-hal berikut, buat / perbarui jika ada yang hilang

  1. Folder src ditandai sebagai folder sumber
  2. File .imls ada
  3. Pemrosesan anotasi diaktifkan
  4. Jika Anda baru-baru ini menggunakan @UtilityClass maka itu juga bisa menjadi alasannya, Bug Link

Jika semuanya baik-baik saja, Anda dapat mencoba solusi berikut dalam urutan tertentu

  1. Kompilasi ulang file / modul

  2. Jika itu tidak menyelesaikan masalah, coba segarkan ketergantungan maven dan buat proyek menggunakan Maven -> ReimportdanBuild -> Rebuild Project

  3. Mencoba mvn clean install -DskipTests

  4. Coba batalkan cache IntelliJ dan mulai ulang IDE menggunakan File > Invalidate caches/ restart

  5. Hapus folder .idea dan impor ulang proyek

Penghargaan dan Terima kasih kepada semua orang yang menjawab pertanyaan ini, Anda dapat merujuk ke jawaban mereka untuk penjelasan lebih lanjut mengenai setiap poin.

Deepak Patankar
sumber
1
berfungsi: Coba batalkan cache IntelliJ dan mulai ulang IDE, menggunakan File> Invalidate caches / restart
Energy
2

Saya tahu ini adalah pertanyaan lama, tetapi sesuai pengalaman saya baru-baru ini, ini terjadi karena sumber daya build dihapus atau Ide tidak dapat mengenalinya sebagai sumber.

Dimanapun kesalahan muncul, berikan sumber untuk folder / direktori dan kesalahan ini harus diselesaikan.

Terkadang bahkan saat kami menetapkan sumber untuk seluruh folder, kelas individu mungkin masih tidak tersedia. Untuk pengguna pemula, solusi sederhana adalah mengimpor salinan baru dan membangun aplikasi lagi agar siap digunakan.

Dianjurkan untuk melakukan instalasi bersih setelah ini.

Matt
sumber
2

mengkompilasi ulang kelas Application.java utama melakukannya untuk saya, klik kanan pada class> Recompile

Taranjit Kang
sumber
2

Saya tahu utas ini sudah tua tetapi, solusi lain adalah menjalankan

$ mvn clean install -Dmaven.test.skip=true

Dan di IntelliJ lakukan CMD + Shift + A (mac os) -> ketik "Reimport all Maven projects".

Jika tidak berhasil, coba paksa dependensi maven untuk diunduh ulang

$ mvn clean -U install -Dmaven.test.skip=true
edmar
sumber
Dalam kasus saya, ada kelas yang dibuat secara otomatis (berdasarkan file XML) yang dirujuk bagian lain dari kode. Saat membangun dengan karya maven, jika tidak mvn installdiedit, IntelliJ tidak melihat referensi tersebut dan gagal menjalankan lingkungan.
tokosh
2

Bagi saya dulu ada masalah dengan Lombok, karena membutuhkan Annotation Processing untuk bisa diaktifkan. Anda dapat menemukan kotak centang ini diSettings > Build > Compiler > Annotation Processors

RaulDanielPopa
sumber
Terima kasih! Ini memperbaikinya untuk saya.
nyarasha
1

Untuk kasus saya, masalahnya adalah dengan menggunakan fitur eksperimental Lombok @UtilityClass dalam proyek java saya di Intellij Idea, untuk membuat anotasi metode kelas sebagai "statis". Ketika saya secara eksplisit membuat setiap metode kelas sebagai "statis" daripada menggunakan anotasi, semua masalah kompilasi menghilang.

Ram
sumber
0

Karena ini adalah hit pertama di Google yang mencari kesalahan "intelliJ can't find symbol", saya akan memasukkan solusi saya juga.

Masalah bagi saya adalah bahwa proyek saya berasal dari Eclipse, dan beberapa file berisi ketergantungan pada kelas yang dibuat src/generated-sourcesoleh spesifikasi di pom.xml. Untuk beberapa alasan, ini tidak dijalankan dengan benar ketika saya pertama kali membuka proyek dan membangun kembali / mengimpor ulang tidak membantu, sehingga file tidak pernah dibuat.

Solusinya adalah dengan mengklik kanan pada modul, dan pilih Maven -> Generate Sources and Update FoldersItu memecahkan masalah dan saya dapat mengkompilasi.

Araklaj
sumber
0

Pastikan file sumber kelas java yang Anda coba rujuk memiliki .javaekstensi. Itu .ajdalam kasus saya (saya harus menekan "Buat aspek" daripada "Buat kelas" saat membuatnya). IntelliJ menunjukkan ikon yang sama untuk file ini seperti untuk kelas "normal", tetapi compiler tidak melihatnya saat membangun.

Mengubah .ajuntuk .javamemperbaikinya dalam kasus saya.

fracz
sumber
0

Terkadang kelas yang Anda inginkan ada di testdirektori sumber. Terjadi pada saya, bagaimanapun…

Sam Barnum
sumber
0

Saya mengalami masalah yang sama kecuali bahwa saya mengimpor kelas yang dependensinya tidak terselesaikan entah bagaimana. Saya memperbarui proyek maven, Rebuild Project. Itu masih belum terselesaikan. Sepertinya IntelliJ melakukan cache sesuatu yang salah. Saya memulai ulang IntelliJ dan itu menyelesaikan dependensi. Saya kira itu membersihkan cache entah bagaimana.

MoneeK
sumber
0

Jika Anda menggunakan Lombok, pastikan Anda telah mengaktifkan pemrosesan anotasi.

Muzammil
sumber
0

Saya melihat banyak jawaban yang mengusulkan membangun atau membangun kembali tetapi kalau-kalau ini tidak memperbaiki masalah Anda, perhatikan saja bahwa IDEA dapat mendeteksi metode tetapi tidak akan dikompilasi jika Anda memiliki newsebelumnya karena akan mengharapkan contoh.

masukkan deskripsi gambar di sini

Carlos López Marí
sumber
0

Dalam kasus saya, saya mengalami masalah dalam mencari kelas dari modul lain. Di pom.xml, saya baru saja memiliki ketergantungan ini dengan <scope>compile</scope>ditentukan. Menghapus baris ini membantu.

nikiforovpizza
sumber
-1

Saya tahu ini sudah lama, tetapi untuk orang lain, pastikan bahwa kelas yang hilang ada dalam paket yang sama dengan kelas tempat Anda mendapatkan kesalahan / dari mana Anda memanggilnya.

Pasha Shestakov
sumber
Suara negatif, karena kelas dapat diimpor dari paket lain. Umumnya, kelas target harus diimpor dan di classpath; saat menggunakan Maven, ketergantungan harus disetel dengan benar.
fxnn