Intellij'de Java projesinde "Sembol bulunamıyor"


101

Bu çağrıyı sınıftan statik bir tekil örneğe yapıyorum GameManager.java.

HUD.getInstance().update(timeDelta);

HUD.javaiçeren HUDsınıf olarak iki ilgili sınıfları, HUDTextElementve HUDElement. Tüm sınıflar aynı kök yolundadır ../src/org/mypackage.

Ancak, bu java projesini IntelliJ'de derlerken , çağrıyı yaptığım satırda Symbol HUD'ı bulamıyorumHUD.getInstance() .

Bu tam olarak aynı kod tutulmada gayet iyi derler, sorunun ne olduğu hakkında bir fikriniz var mı?


1
HUD sınıfınız her ikisinde de içe aktarılmış mı?
Alex Coleman

Bu benim için çalıştı Bu sorunun tek çözüm stackoverflow.com/a/56473166/8660553
Sahil Singhal

Yanıtlar:


175

Build-> Rebuild Project'i seçin çözecektir


20
Java / IntelliJ'e tam öğle yemeği için not: yukarıdaki "Build Project" ten farklı
hiljusti

4
@JustinHill - Tutulma konusunda bilgiliyim ve IntelliJ'de yeniyim. IntellJ ile zamanımı ayarlamama yardımcı olan iki ve herhangi bir nokta / bağlantı arasındaki farkın ne olduğu konusunda bana yardım edebilir misin?
nanosoft

1
Muhtemelen Google aramasından daha kötü bir kaynakım, Eclipse kullanmadım. Benim yorumum sadece "Rebuild Project" ve "Build Project" farklı seçeneklerdir (bununla karşılaşan birine yardım
ediyordum

1
Bu neden işe yaradı? Önbellekleri geçersiz kılmak ve yeniden başlatmak işe yaramadı bile.
b15

İşe
yaradı

54

Aynı sorunu yaşadım ve yeni projeyi hiçbir zaman tam olarak derlemediğim ortaya çıktı. Yani sağ tıklayıp Compile '' (mac'da shift-cmd-F9) seçmek sorunu çözdü. Görünüşe göre kaydetme sırasındaki derleme, derlenmemiş dosyaları 'görmüyor'.

Kaynak olarak src klasörünü İşaretleme yoktu değil benim durumumda yardımcı olur.


48

Aynı sorunu yaşadım ve Dosya> Önbellekleri geçersiz kıl / yeniden başlat'ı tıklayarak düzelttim


1
Dikkat edin - herhangi bir değişiklik olursanız ve bunlar taahhüt edilmemişse, kaybolacaklardır. :)
Nikola

7
Önbelleklerin geçersiz kılınması, değişikliklerin kaybolmasına neden olmaz. Bunun nasıl çalışacağından bile emin değilim. Bir dosyayı kaydederseniz, IntelliJ önbelleğe alma veya bir havuza kaydetme işleminden bağımsız olarak kaydedilir.
Christopher Schneider

1
Hayatımı kurtar, teşekkürler.
Jadson Santos

Buradaki en son cevaplardan biri bunu oldukça eski bir soru için yaptı.
Kawu

29

Bu muhtemelen sizin ../src klasörünüz Intellij IDEA'da "kaynak" klasör olarak işaretlenmemiştir, bu nedenle sınıfınızı bulmak için oraya bakmayı bilmiyor. Bunu düzeltmek için proje gezgininde klasöre sağ tıklayıp "kaynak klasör olarak işaretle" yi seçebilirsiniz.


1 bir olasılıktır, ancak 2 ona HUD'yi bulamadığını söyleyen bir hata vermez, bunun yerine getInstance / güncelleme yöntemine sahip olmadığını söyleyen bir hata mı?
Alex Coleman

bu seçenek gitmiş gibi görünüyor.
clankill3r

Hayır, pop-up seçeneklerine dönüşüyor: "Dizini
Farklı

Src, içinde test klasörü ve çoklu modüller içeriyor, Kaynak Kök olarak işaretledikten sonra sorunum en kötüsü.
Se Song

Benim için bu doğru cevaba yakındı. Kaynak köküm zaten işaretlenmişti, ancak hatayı düzeltmek için "Kaynak Kökü İşaretini Kaldır" ve ardından tekrar Kaynaklar kökü olarak işaretlemem gerekiyordu.
yanni

27

Ben de aynı "sembol bulunamıyor" hatasını alıyordum Build -> Make Project. Maven /targetklasörümü silerek , proje modülüme sağ tıklayarak ve yaparak Maven -> Reimportve yaparak bunu düzelttim.Build -> Rebuild Project . Bu IntelliJ Idea 13.1.5'teydi.

Maven -> ReimportSonunda bunu yapmadan önce sorun birkaç kez yeniden su yüzüne çıktığı için kilit nokta olduğu ortaya çıktı.


12

Şimdiye kadarki yardım için teşekkürler, düzeltmenin ilk önce HUD.java'yı derlemek olduğu ortaya çıktı (dosyaya sağ tıklayın-> HUD.java'yı derleyin). Java dosyasını derledikten sonra projenin geri kalanı sorunsuz bir şekilde derlenebilir.

Bunun neden düzeltildiğini veya IntelliJ'in bunu neden otomatik olarak yapmadığını gerçekten bilmiyorum, ancak kök hatası, IntelliJ'in tek bir .java dosyasında birden fazla sınıfın doğru şekilde işlememesi ile ilgisi var gibi görünüyor.


1
IntelliJ, tek bir dosyada birden çok sınıfı iyi idare edebilir, sadece dosyanın bir noktada derlendiğinden emin olması gerekir.
Makoto

Evet, sadece aynı sorunu tek bir sınıf dosyasında yaşadım. Bu maven komutu çalıştırılmadan önce Garibi, sadece iyi hakkına çalışan olmuştu: mvn com.zenjava:javafx-maven-plugin:2.0:fix-classpath. Javafx jar dosyasını libs dizininden geçerli JDK için ext dizinine taşımak içindir. Burada buldum .
nihilon

7

Projeye sağ tıklayıp "Run Maven" alt menüsü altında "Reimport" seçeneğini seçmem gerekti.


7

Benim için - bu adımları denedim (Önbelleği Geçersiz Kıl ve Yeniden Başlat, Maven Reimport) ama işe yaramadı. Ben silindi Yani .idea, .settingsve .projectklasör ve denenmiş - işe yaradı.


4
.ideaKlasörü silmek benim için yaptı.
Daniel D.

5

Projemde maven kullanıyorum. Nedense IntelliJ bana bu tür tuhaf hatalar veriyordu. Mvn'yi temiz çalıştırdım ve yeniden senkronize etmeyi denedim ve bu hatalar kayboldu.


1
temiz bir maven yaşam döngüsüdür. Maven projesi tarafından oluşturulan tüm çıktı dosyalarını temizlemek istiyorsanız bunu kullanırsınız.
Moiz Raja

4

Bu, bir klasörü silip ardından kopyalayıp projeye geri yapıştırdığımda başıma geldi.

Right-click project folder -> Rebuild benim için çalıştı.


3

ana Application.java sınıfını yeniden derlemek benim için yaptı, sınıfa sağ tıklayın> Yeniden derleyin


3

Aynı problemle karşılaştım ve cevapta verilen birçok çözüm var, tüm bu çözümleri denemek biraz zaman aldı, bu yüzden burada bu hatayı alırsanız yöntemsel bir yaklaşım önermek istiyorum.

Aşağıdakileri kontrol edin, eksik bir şey varsa oluşturun / güncelleyin

  1. src klasörü kaynak klasör olarak işaretlenir
  2. .imls dosyaları mevcut
  3. Ek açıklama işleme etkinleştirildi
  4. Son zamanlarda @UtilityClass kullandıysanız, bunun nedeni de olabilir, Hata Bağlantısı

Her şey yolundaysa, çözümleri verilen sırayla deneyebilirsiniz.

  1. Dosyayı / modülü yeniden derleyin

  2. Bu sorunu çözmediyse, maven bağımlılığını yenilemeyi ve projeyi Maven -> ReimportveBuild -> Rebuild Project

  3. Deneyin mvn clean install -DskipTests

  4. IntelliJ önbelleğini geçersiz kılmayı ve IDE'yi yeniden başlatmayı deneyin. File > Invalidate caches/ restart

  5. .İdea klasörünü silin ve projeyi yeniden içe aktarın

Kredi ve Bu soruyu cevaplayan herkese teşekkürler, her nokta ile ilgili daha fazla açıklama için cevaplarına bakabilirsiniz.


1
çalışır: IntelliJ önbelleğini geçersiz kılmayı ve Dosya> Önbellekleri geçersiz kıl / yeniden başlat
Energy

2

Bunun eski bir soru olduğunu biliyorum, ancak son deneyimime göre bu, derleme kaynaklarının silinmesi veya Idea'nın bunları kaynak olarak tanıyamaması nedeniyle oluyor.

Hata nerede görünürse görünsün, klasör / dizin için kaynak sağlayın ve bu hatanın çözülmesi gerekir.

Bazen tüm klasör için kaynaklar atadığımızda bile, bireysel sınıflar yine de kullanılamayabilir. Acemi kullanıcılar için basit bir çözüm, yeni bir kopyayı içe aktarmak ve kullanıma hazır olması için uygulamayı yeniden oluşturmaktır.

Bundan sonra temiz bir kurulum yapmanız tavsiye edilir.


2

Bu iş parçacığının eski olduğunu biliyorum, ancak başka bir çözüm çalıştırmaktı

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

IntelliJ'de CMD + Shift + A (mac os) -> "Tüm Maven projelerini yeniden içe aktar" yazın.

Bu işe yaramazsa, maven bağımlılıklarını yeniden indirilmeye zorlamayı deneyin

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

Benim durumumda, kodun diğer bölümlerinin başvurduğu otomatik olarak oluşturulmuş sınıflar (XML dosyalarına dayalı) vardı. Maven ile bina inşa ederken, eğer yapılmamışsa mvn install, IntelliJ bu referansları görmedi ve çalışma ortamını bozdu.
tokosh

2

Benim için Lombok ile ilgili bir sorundu çünkü Ek Açıklama İşlemenin etkinleştirilmesini gerektiriyor. Bu onay kutusunu şurada bulabilirsiniz:Settings > Build > Compiler > Annotation Processors


Teşekkür ederim! Bu benim için düzeltti.
nyarasha

1

Benim durumum için sorun, Intellij Idea'daki java projemde Lombok'un deneysel özelliği @UtilityClass'ı kullanarak bir sınıf yöntemini "statik" olarak açıklamaktı. Ek açıklamayı kullanmak yerine sınıfın her bir yöntemini açıkça "statik" yaptığımda, tüm derleme sorunları ortadan kalktı.


1

Lombok kullanıyorsanız, açıklama işlemeyi etkinleştirdiğinizden emin olun.


0

Bu, Google'da "intelliJ sembol bulamıyor" hatasını arayan ilk isabet olduğundan, çözümümü de ekleyeceğim.

Benim için sorun, projemin Eclipse kaynaklı olması ve bazı dosyaların, içinde oluşturulan sınıflara bağımlılık içermesiydi. src/generated-sources , projemin pom.xml'deki belirtimlere içermesiydi. Bazı nedenlerden dolayı, projeyi ilk açtığımda bu düzgün bir şekilde yürütülmedi ve yeniden oluşturma / yeniden içe aktarma yardımcı olmadı, bu nedenle dosyalar hiçbir zaman oluşturulmadı.

Çözüm, modüle sağ tıklayıp Maven -> Generate Sources and Update FoldersSorunu çözen ve derleyebildim'i seçmekti .


0

Başvurmaya çalıştığınız java sınıfının kaynak dosyasının bir .javauzantıya sahip olduğundan emin olun . Öyleydi.aj (o oluştururken yerine "sınıfının Create" nin "yönünü oluşturma" vurmak gerekir) benim durumumda. IntelliJ, bu dosya için "normal" sınıfla aynı simgeyi gösterir, ancak derleyici bunu oluştururken görmez.

Benim durumumda düzeltmek .ajiçin değiştiriyorum .java.


0

Bazen istediğiniz sınıf testkaynak dizindedir. Her neyse, bana oldu ...


0

Bağımlılıkların bir şekilde çözülmediği sınıfları içe aktarmam dışında aynı sorunu yaşıyordum. Maven projelerini yeniledim, Rebuild Project. Hala çözülmedi. Görünüşe göre IntelliJ bir şeyi yanlış bir şekilde önbelleğe alıyor. IntelliJ'i yeniden başlattım ve bu bağımlılıkları çözdü. Sanırım önbelleği bir şekilde temizledi.


0

Bir derleme veya yeniden oluşturma öneren çok sayıda yanıt görüyorum, ancak bunun sorununuzu çözmemesi durumunda, sadece IDEA'nın bir yöntemi algılayabildiğini ancak daha newönce olduğu gibi bir yönteminiz olması durumunda derlenmeyeceğini fark edin . örneği bekliyorum.

görüntü açıklamasını buraya girin


0

Benim durumumda, başka bir modülden bir sınıf bulmakta sorun yaşadım. İçinde pom.xml, bu bağımlılığı <scope>compile</scope>belirttim. Bu çizgiyi kaldırmak yardımcı oldu.


-1

Bunun eski olduğunu biliyorum, ancak başka biri için, eksik olan sınıfın hatayı aldığınız / onu nereden çağırdığınız sınıfla aynı pakette olduğundan emin olun.


Sınıflar diğer paketlerden içe aktarılabildiğinden, olumsuz oy verildi. Genel olarak, hedef sınıf içe aktarılmalı ve sınıf yolunda olmalıdır; Maven kullanırken, bağımlılık doğru şekilde ayarlanmalıdır.
fxnn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.