“Sembol bulunamıyor” veya “Sembol çözülemiyor” hatası ne anlama geliyor?


395

Lütfen "Sembol bulunamıyor" ve "Sembol çözülemiyor" hataları hakkında aşağıdakileri açıklayın:

  • Ne demek istiyorlar?
  • Hangi şeyler onlara neden olabilir?
  • Programcı bunları düzeltmek için nasıl gidiyor?

Bu soru, Java'daki bu yaygın derleme hataları hakkında kapsamlı bir Soru-Cevap oluşturmak için tasarlanmıştır.

Yanıtlar:


417

0. İki hata arasında fark var mı?

Pek sayılmaz. "Sembol bulunamıyor" ve "Sembol çözülemiyor" aynı anlama geliyor. Bazı Java derleyicileri bir kelime öbeği, diğer kelime öbekleri kullanır.

1. "Sembol bulunamıyor" hatası ne anlama geliyor?

İlk olarak, bir derleme hatası 1'dir . Bu demektir ya da Java kaynak kodunda bir sorun vardır, ya bunu derleme bu şekilde bir sorun vardır.

Java kaynak kodunuz aşağıdakilerden oluşur:

  • Anahtar Kelimeler: gibi true, false, class, while, vb.
  • Değişmez: gibi 42ve 'X've "Hi mum!".
  • Operatörler ve alfanümerik olmayan diğer belirteçleri: gibi +, =, {, vb.
  • Tanımlayıcıları: gibi Reader, i, toString, processEquibalancedElephants, vb.
  • Yorumlar ve boşluk.

"Sembol bulunamıyor" hatası tanımlayıcılarla ilgilidir. Kodunuz derlendiğinde, derleyicinin kodunuzdaki her tanımlayıcının ne anlama geldiğini hesaplaması gerekir.

"Sembol bulunamıyor" hatası, derleyicinin bunu yapamayacağı anlamına gelir. Kodunuz, derleyicinin anlamadığı bir şeye atıfta bulunuyor gibi görünüyor.

2. "Sembol bulunamadı" hatasına ne sebep olabilir?

İlk sipariş olarak, sadece bir sebep var. Derleyici, tanımlayıcının tanımlanması gereken tüm yerlere baktı ve tanımı bulamadı. Bu birkaç şeyden kaynaklanabilir. Ortak olanlar aşağıdaki gibidir:

  • Genel olarak tanımlayıcılar için:
    • Belki de ismi yanlış hecelediniz; yani StringBiulderyerine StringBuilder. Java, kötü yazım veya yazım hatalarını telafi edemez ve denemez.
    • Belki de davayı yanlış anladınız; yani stringBuilderyerine StringBuilder. Tüm Java tanımlayıcıları büyük / küçük harfe duyarlıdır.
    • Belki de alt çizgileri uygunsuz kullandınız; yani mystringve my_stringfarklı. (Java stili kurallarına bağlı kalırsanız, bu hatadan büyük ölçüde korunacaksınız ...)
    • Belki de "başka bir yerde" ilan edilen bir şeyi kullanmaya çalışıyorsunuz; yani derleyiciye bakmasını örtük olarak anlattığınız yerden farklı bir bağlamda. (Farklı bir sınıf? Farklı bir kapsam? Farklı bir paket? Farklı bir kod tabanı?)
  • Değişkenlere başvurması gereken tanımlayıcılar için:
    • Belki de değişkeni beyan etmeyi unuttun.
    • Değişken bildirimi, kullanmaya çalıştığınız noktada kapsam dışı olabilir. (Aşağıdaki örneğe bakın)
  • Yöntem veya alan adları olması gereken tanımlayıcılar için:

    • Belki de üst / ata sınıflarında veya arabirimlerinde bildirilmemiş miras alınan bir yönteme veya alana başvurmaya çalışıyorsunuzdur.
    • Belki de kullandığınız türde mevcut olmayan bir yöntem veya alana başvurmaya çalışıyorsunuz; örneğin "someString".push()2 .
    • Belki bir yöntemi alan olarak kullanmaya çalışıyorsunuz, ya da tam tersi; örneğin "someString".lengthveya someArray.length().
    • Belki de yanlışlıkla dizi öğesi yerine bir dizi üzerinde çalışıyorsunuz; Örneğin

      String strings[] = ...
      if (strings.charAt(3)) { ... }
      // maybe that should be 'strings[0].charAt(3)'
  • Sınıf adları olması gereken tanımlayıcılar için:

    • Belki de sınıfı almayı unuttun.
    • Belki "yıldız" içe aktarmalarını kullandınız, ancak sınıf içe aktardığınız paketlerin hiçbirinde tanımlanmamış.
    • Belki de a new:

      String s = String();  // should be 'new String()'
  • Tür veya örneğin, üyeye sahip olmasını beklediğiniz üyeye sahip olmadığı durumlarda:

    • Belki de iç içe bir sınıf veya kullanmak istediğiniz türün gölgesini veren genel bir parametre bildirmişsinizdir .
    • Belki statik veya örnek bir değişkeni gölgeliyorsunuzdur.
    • Belki de yanlış türü içe aktardınız; örneğin IDE tamamlanması veya otomatik düzeltme nedeniyle.
    • Belki de bir API'nin yanlış sürümünü kullanıyorsunuz (buna karşı derliyorsunuz).
    • Belki de objenizi uygun bir alt sınıfa dökmeyi unutmuşsunuzdur.

Sorun genellikle yukarıdakilerin bir kombinasyonudur. Örneğin, belki "yıldız" ithal java.io.*ve sonra Filessınıf kullanmaya çalıştı ... ki java.niodeğil java.io. Ya da belki de yazmak istedin File... ki bu bir sınıf java.io.


Yanlış değişken kapsamlandırmanın nasıl "Sembol bulunamıyor" hatasına yol açabileceğine ilişkin bir örnek:

List<String> strings = ...

for (int i = 0; i < strings.size(); i++) {
    if (strings.get(i).equalsIgnoreCase("fnord")) {
        break;
    }
}
if (i < strings.size()) {
    ...
}

Bu bir "sembol bulamıyor" hatası verecektir iiçinde ifdeyimi. Daha önce ilan rağmen i, bu beyanı sadece kapsamda için forifade ile onun vücudunda. Yapılan atıf iiçinde ifdeyimi göremiyorum bu beyanı i. Öyle kapsam dışında .

(Burada uygun bir düzeltme, ififadeyi döngü içinde taşımak veya döngü ibaşlamadan önce bildirmek olabilir .)


Yazım hatası, açıklanamayan bir "Sembol bulunamıyor" hatasına yol açan şaşkınlığa neden olan bir örnek:

for (int i = 0; i < 100; i++); {
    System.out.println("i is " + i);
}

Bu, printlnaramada ibulunamadığını söyleyen bir derleme hatası verecektir . Ama (duyduğunu duyuyorum) beyan ettim!

Sorun sinsi noktalı virgül ( ;) {. Java dili sözdizimi, bu bağlamdaki noktalı virgülün boş bir ifade olduğunu tanımlar . Boş ifade daha sonra forhalkanın gövdesi olur . Yani bu kod aslında şu anlama gelir:

for (int i = 0; i < 100; i++); 

// The previous and following are separate statements!!

{
    System.out.println("i is " + i);
}

{ ... }Blok gövdesi DEĞİLDİR fordöngü ve dolayısıyla önceki beyanı iiçinde forifadesi kapsam dışında bloğunda.


Aşağıda, yazım hatası nedeniyle oluşan "Sembol bulunamıyor" hatasının başka bir örneği verilmiştir.

int tmp = ...
int res = tmp(a + b);

Bir önceki bildiriminde rağmen tmpiçinde tmp(...)ifade yanlıştır. Derleyici adlı bir yöntemi arayacak tmpve bulamayacaktır. Daha önce bildirilenler tmp, yöntemlerin ad alanında değil, değişkenlerin ad alanındadır.

Karşılaştığım örnekte, programcı aslında bir operatör bırakmıştı. Yazmak istediği şey şuydu:

int res = tmp * (a + b);

Komut satırından derliyorsanız, derleyicinin bir sembol bulamamasının başka bir nedeni daha vardır. Başka bir sınıfı derlemeyi veya yeniden derlemeyi unutmuş olabilirsiniz. Örneğin, sınıflarınız Foove Barnerede Fookullandığınız varsa Bar. Daha önce hiç derlemediyseniz Barve çalıştırıyorsanız javac Foo.java, derleyicinin sembolü bulamadığını görebilirsiniz Bar. Basit cevap derlemek Foove Barbirlikte yapmaktır ; örneğin javac Foo.java Bar.javaveya javac *.java. Ya da daha iyisi bir Java derleme aracı kullanın; örneğin Ant, Maven, Gradle vb.

Aşağıda ele alacağım daha belirsiz bazı başka nedenler de var.

3. Bu hataları nasıl düzeltirim?

Genel olarak, derleme hatasına neyin sebep olduğunu bularak işe başlarsınız .

  • Dosyada derleme hata mesajı ile gösterilen satıra bakın.
  • Hata mesajının hangi sembolden bahsettiğini belirleyin.
  • Anlamaya neden derleyici o sembolü bulamadığını söylüyor; yukarıyı görmek!

Sonra kodunuzun ne söylemesi gerektiğini düşünüyorsunuz . Son olarak, istediğinizi yapmak için kaynak kodunuzda hangi düzeltmeyi yapmanız gerektiğini hesaplarsınız.

Her "düzeltmenin" doğru olmadığını unutmayın. Bunu düşün:

for (int i = 1; i < 10; i++) {
    for (j = 1; j < 10; j++) {
        ...
    }
}

Derleyicinin "sembolü bulunamıyor" yazdığını varsayalım j. Bunu "düzeltmenin" birçok yolu vardır:

  • Ben iç değişebilir forYapılır for (int j = 1; j < 10; j++)- Doğru muhtemelen.
  • İç döngüden veya dış döngüden j önce bir açıklama ekleyebilirim - muhtemelen doğru.forfor
  • Ben değişebilir jiçin iiç içinde fordöngü - yanlış muhtemelen!
  • ve bunun gibi.

Mesele şu ki , doğru düzeltmeyi bulmak için kodunuzun ne yapmaya çalıştığını anlamanız gerekiyor .

4. Belirsiz nedenler

Yakında görünene kadar "Sembol bulunamıyor" un görünüşte açıklanamayacağı birkaç durum var.

  1. Yanlış bağımlılıklar : Derleme yolunu ve proje bağımlılıklarını yöneten bir IDE veya oluşturma aracı kullanıyorsanız, bağımlılıklarla ilgili bir hata yapmış olabilirsiniz; örneğin bir bağımlılığı göz ardı etmek veya yanlış sürümü seçmek. Bir oluşturma aracı (Ant, Maven, Gradle, vb.) Kullanıyorsanız, projenin derleme dosyasını kontrol edin. Bir IDE kullanıyorsanız, projenin derleme yolu yapılandırmasını kontrol edin.

  2. Yeniden derlemiyorsunuz : Bazen yeni Java programcıları Java araç zincirinin nasıl çalıştığını anlamıyor veya tekrarlanabilir bir "oluşturma işlemi" uygulamıyor olabilir; örneğin bir IDE, Ant, Maven, Gradle vb. Böyle bir durumda, programcı olan hayali bir hata arayan kuyruğunu kovalayan sona erebilir aslında düzgün kodu yeniden derlenerek değil kaynaklanır ve benzeri ...

  3. Önceki bir derleme sorunu : Önceki bir derlemenin eksik sınıflara sahip bir JAR dosyası verecek şekilde başarısız olması mümkündür. Böyle bir hata genellikle bir oluşturma aracı kullanıyorsanız fark edilir. Ancak, JAR dosyalarını başka birinden alıyorsanız, bunların düzgün bir şekilde oluşturulmasına ve hataları fark etmenize bağlıdır . Bundan şüpheleniyorsanız tar -tvf, şüpheli JAR dosyasının içeriğini listelemek için kullanın .

  4. IDE sorunları : İnsanlar IDE'lerinin kafasının karıştığı ve IDE'deki derleyicinin var olan bir sınıfı veya tersi durumu bulamadığı durumlar bildirmiştir.

    • Bu, IDE yanlış JDK sürümüyle yapılandırılmışsa olabilir.

    • Bu, IDE'nin önbellekleri dosya sistemiyle senkronize olmazsa olabilir. Bunu düzeltmek için IDE'ye özgü yollar vardır.

    • Bu bir IDE hatası olabilir. Örneğin, @Joel Costigliola, Eclipse'in Maven "test" ağacını doğru işlemediği bir senaryoyu tanımlar: bu cevaba bakınız .

  5. Android sorunları : Android için programlama yaparken ve ilgili "Sembol bulunamadı" hatalarınız Rolduğunda, Rsembollerin context.xmldosya tarafından tanımlandığını unutmayın . Senin olmadığını kontrol context.xmldosyası doğru ve doğru yerde olduğunu ve karşılık gelen bu Rsınıf dosyası oluşturulduktan / derlenmiş. Java sembollerinin büyük / küçük harfe duyarlı olduğunu, dolayısıyla karşılık gelen XML kimliklerinin de büyük / küçük harfe duyarlı olduğunu unutmayın.

    Android'deki diğer sembol hatalarının daha önce bahsedilen nedenlerden kaynaklanması muhtemeldir; örneğin, eksik veya yanlış bağımlılıklar, yanlış paket adları, belirli bir API sürümünde bulunmayan yöntem veya alanlar, yazım / yazma hataları vb.

  6. Sistem sınıflarını yeniden tanımlama : Derleyicinin şikayet ettiği substringve aşağıdaki gibi bir şeyde bilinmeyen bir sembol olduğunu gördüm

    String s = ...
    String s1 = s.substring(1);

    Programcının kendi versiyonunu yarattığı Stringve sınıf versiyonunun bir substringyöntem tanımlamadığı ortaya çıktı .

    Ders: Ortak kütüphane sınıflarıyla aynı adlara sahip kendi sınıflarınızı tanımlamayın!

  7. Homoglifler: Kaynak dosyalarınız için UTF-8 kodlaması kullanırsanız , aynı görünen ancak aslında farklı olan tanımlayıcılara sahip olmanız mümkündür çünkü bunlar homoglifler içerir. Daha fazla bilgi için bu sayfaya bakın .

    Kendinizi kaynak dosya kodlaması olarak ASCII veya Latin-1 ile sınırlayarak ve \uxxxxdiğer karakterler için Java çıkışlarını kullanarak bunu önleyebilirsiniz .


1 - Eğer belki, sen mi o zaman ya sen derleme hataları ile çalışma koduna IDE yapılandırmış veya başvurunuz zamanında .. üretme ve kod derleme, bir çalışma zamanı istisnası ya da hata iletisinde görüyoruz.

2 - İnşaat Mühendisliğinin üç temel prensibi: su yokuş yukarı akmaz, bir tahta kendi tarafında daha güçlüdür ve bir ipte itemezsiniz .


Tutulma sorunu görmezken bu derleme hatasının oluştuğu başka bir durum vardı: Sırasıyla diğer sınıfta tanımlanan bağımlılıkları olan iki sınıf. Benim durumumda, enum zaten aptalca kullandığım bir sınıfta tanımlanan bir arabirim uygulayan bir enum vardı.
Jogi

Yukarıdaki yoruma biraz benzer şekilde, programımı Eclipse'den derleyip çalıştırdığımda sorun yok. Konsoldan derlendiğinde, bir içe aktarma işleminde genellikle son öğeyle ilgili olan bu "Sembol bulunamıyor" hatalarından bir sürü oluşur. Gerçekten kodda yanlış bir şey yok gibi bu neden oluyor hakkında hiçbir fikrim yok.
Andres Stadelmann

Başka bir sorun da IDE'lerin bu kategorideki diğer hataları "yorumlayabilmesidir". Örneğin printlniçinde System.out.printlnstandart derleyici altında sınıf düzeyinde yerleştirilen varsa bize verecekti <identifier> expected( demo ) ama IntelliJ içinde göreceğiz Cannot resolve symbol 'println'( demo ).
Pshemo

Vay. Buna derleyici hata derdim.
Stephen C

23

Aşağıdakileri unutursanız da bu hatayı alırsınız new:

String s = String();

karşı

String s = new String();

çünkü newanahtar kelime içermeyen çağrı, Stringargümansız olarak adlandırılan (yerel) bir yöntemi arayacak ve bu yöntem imzası büyük olasılıkla tanımlanmayacaktır.


14

'Değişken kapsam dışında' bir başka örnek

Bir kaç kez şimdiden soru tür yasadışı ne kadar belki bir daha örnek, olsa dahi o gördüğümüz gibi hissediyorum tamam.

Bu kodu düşünün:

if(somethingIsTrue()) {
  String message = "Everything is fine";
} else {
  String message = "We have an error";
}
System.out.println(message);

Bu geçersiz kod. Çünkü adlandırılan değişkenlerin hiçbiri messagekendi kapsamlarının dışında görünmez - {}bu durumda çevredeki parantezler olacaktır .

Sen diyebilirsiniz: "Ama bu mesaj adında bir değişken her iki şekilde tanımlanır - mesaj böylece edilir sonra tanımlanmış if".

Ama yanılıyorsun.

Java hiçbir vardır free()ya deletedeğişkenler artık (birlikte neden bu değişkenlere referanslarla) kullanıldığında olduğunda bunu bulmak değişken kapsamını izleme güvenmek zorundadır, böylece operatörler.

İyi bir şey yaptığınızı düşünüyorsanız özellikle kötü. Böyle "kod optimize" sonra bu tür bir hata gördüm:

if(somethingIsTrue()) {
  String message = "Everything is fine";
  System.out.println(message);
} else {
  String message = "We have an error";
  System.out.println(message);
}

"Ah, yinelenen kod var, ortak çizgiyi dışarı çıkaralım" -> ve işte orada.

Bu tür bir kapsam sorunuyla başa çıkmanın en yaygın yolu, else-değerlerini dış kapsamdaki değişken adlarına önceden atamak ve ardından aşağıdaki durumlarda yeniden atamaktır:

String message = "We have an error";
if(somethingIsTrue()) {
  message = "Everything is fine";
} 
System.out.println(message);

4
"Java'nın free () veya delete operatörü yoktur, bu nedenle değişkenlerin artık ne zaman kullanılmadığını öğrenmek için değişken kapsamını izlemelidir (bu neden değişkenlerine referanslarla birlikte)." - Doğru olsa da, bu alakalı değil. C ve C ++ sırasıyla serbest / sil operatörlerine sahiptir ve örneklerinize eşdeğer C / C ++ kodu geçersizdir. C ve C ++ blokları, tıpkı Java'da olduğu gibi değişkenlerin kapsamını sınırlar. Aslında bu, çoğu "blok yapılandırılmış" dil için geçerlidir.
Stephen C

1
Her dal için farklı bir değer atayan kod için daha iyi bir çözüm, boşfinal değişken bildirimi kullanmaktır.
Daniel Pryden

10

Eclipse'de bu hatayı almanın bir yolu:

  1. Bir sınıf tanımlayın Aiçinde src/test/java.
  2. Başka bir sınıf tanımlayın Biçinde src/main/javathat use sınıfında A.

Sonuç: Eclipse kodu derleyecek, ancak maven "Sembol bulunamıyor" verecektir.

Altta yatan neden: Eclipse, ana ve test ağaçları için kombine bir yapım yolu kullanıyor. Maalesef, Eclipse projesinin farklı bölümleri için Maven'in gerektirdiği farklı yapım yollarının kullanılmasını desteklemiyor.

Çözüm :

  1. Bağımlılıklarınızı bu şekilde tanımlamayın; yani bu hatayı yapma.
  2. Düzenli olarak Maven'i kullanarak kod tabanınızı derleyin, böylece bu hatayı erkenden alabilirsiniz. Bunu yapmanın bir yolu bir CI sunucusu kullanmaktır.

Bunun çözümü nedir?

2
src / main / java içinde ne kullanırsanız kullanın src / main / java içinde veya herhangi bir derleme / çalışma zamanı bağımlılığında (test bağımlılıkları değil) tanımlanmalıdır.
Joel Costigliola

5

"Bulamıyorum" demek, uygun değişken, yöntem, sınıf vb bulamıyor derleyici ... Eğer bu hata masaj var, her şeyden önce hata masaj olsun kod hattı bulmak istiyorum .. Ve sonra olacak Kullanmadan önce hangi değişkenin, yöntemin veya sınıfın tanımlanmadığını bulabilir.Onaylamanın ardından bu değişkeni, yöntemi veya sınıfı daha sonra gerektirmek için kullanılabilir hale getirin ... Aşağıdaki örneği ele alalım.

Bir demo sınıfı oluşturacağım ve bir isim yazacağım ...

class demo{ 
      public static void main(String a[]){
             System.out.print(name);
      }
}

Şimdi sonuca bak ..

resim açıklamasını buraya girin

Bu hata, "değişken adı bulunamıyor" der. "Ad" değişkeni için değer tanımlamak ve başlatmak bu hatayı ortadan kaldırabilir .. Aslında böyle,

class demo{ 
      public static void main(String a[]){

             String name="smith";

             System.out.print(name);
      }
}

Şimdi yeni çıktıya bakın ...

resim açıklamasını buraya girin

Tamam Başarıyla bu hatayı çözdü .. Aynı zamanda, "yöntem bulamıyorum" veya "sınıf bulamıyorum" bir şey alabilir, İlk başta, bir sınıf veya yöntem tanımlayın ve bunu kullandıktan sonra ..


3

Bu hatayı başka bir yerde derlemede alıyorsanız, IDE'niz her şeyin mükemmel olduğunu söylüyorsa, her iki yerde de aynı Java sürümlerini kullandığınızı kontrol edin.

Örneğin, Java 7 ve Java 8 farklı API'lara sahiptir, bu nedenle eski bir Java sürümünde var olmayan bir API'yi çağırmak bu hataya neden olur.


2

Ben de bu hatayı alıyordum. (bunun için googledim ve bu sayfaya yönlendirildim)

Sorun: Başka bir proje B'de tanımlanan bir sınıftan bir proje A sınıfında tanımlanan statik bir yöntem çağırıyordu. Aşağıdaki hatayı alıyordum:

error: cannot find symbol

Çözüm: İlk önce yöntemin tanımlandığı projeyi sonra yöntemin çağrıldığı projeyi oluşturarak çözdüm.


Evet, örneğin, yeniden kullanılabilir bazı işlevleri geçerli paketinizden ortak utils paketinize taşımaya karar verirseniz, ancak geçerli paketi paketinizden çağırmadan önce ortak paketinizi derlemeyi unutursunuz.
buildingKofi

2

Tutulma Java oluşturma yolu 7, 8 ile eşlenirse ve Project pom.xml Maven özelliklerinde java.version'da 7,8'den daha yüksek Java sürümü (9,10,11 vb.) Belirtilir. Pom'da güncellemeniz gerekir. xml dosyası.

Eclipse'de Java, Java sürüm 11'e ve pom.xml dosyasında Java sürüm 8'e eşlenirse, Eclipse desteğini, eclipse IDE Yardımı -> Yeni Yazılım Yükle -> adımlarını izleyerek Java 11'e güncelleyin.

Aşağıdaki bağlantıyı yapıştırın http://download.eclipse.org/eclipse/updates/4.9-P-builds at Work With

veya

Ekle (Açılır pencere açılacaktır) ->

Name:Java 11 desteği Location: http://download.eclipse.org/eclipse/updates/4.9-P-builds

sonra pom.xml dosyasının Maven özelliklerinde Java sürümünü aşağıdaki gibi güncelleyin

<java.version>11</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>

Son olarak Debug as -> Maven clean, Maven build steps projesine sağ tıklayın



1

İnsanların yukarıda belirttiği gibi çeşitli senaryolar olabilir. Bunu çözmeme yardımcı olan birkaç şey.

  1. IntelliJ kullanıyorsanız

    File -> 'Invalidate Caches/Restart'

VEYA

  1. Başvuru yapılan sınıf başka bir projedeydi ve bu bağımlılık projemin Gradle derleme dosyasına eklenmedi. Bu yüzden bağımlılığı kullanarak

    compile project(':anotherProject')

ve işe yaradı. HTH!


1

maven derlemesini kullanarak kodunuzu derlediniz ve daha sonra çalışmasını sağlamak için maven testini kullandınız. Şimdi kodunuzdaki bir şeyi değiştirdiyseniz ve derlemeden çalıştırıyorsanız, bu hatayı alırsınız.

Çözüm: Tekrar derleyin ve ardından testi çalıştırın. Benim için bu şekilde çalıştı.


1

Benim durumumda - Aşağıdaki işlemleri yapmak zorunda kaldım:

  1. Taşı context.xmldosyayı src/java/packageiçin resourcedizine (IntelliJ IDE)
  2. targetDizini temizle .

Başvuruları umursamadan dosyayı taşımak bu hataya neden olabilir. Bunu zaten tanıştım. Sadece Git üzerinde sıfırlayın ve dikkatlice tekrar taşıyın, hata çözün.
Huy Hóm H 2nh

0

İpuçları için, hata ve satır numarasını atan sınıf adı adına daha yakından bakın, örnek: Derleme hatası [HATA] \ apps \ xxxxx.java: [44,30] hatası: sembolü bulunamıyor

Diğer bir neden jdk7 vs 8 java sürümü için desteklenmeyen bir yöntemdir.% JAVA_HOME%


Bu sadece diğer cevapların söylediği şeyi söylüyor.
Stephen C
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.