Neden Java'da NoClassDefFoundError alıyorum?


530

NoClassDefFoundErrorJava uygulamamı çalıştırdığımda bir an alıyorum . Bunun nedeni genellikle nedir?


1
Java programını doğru sözdizimi ile çalıştırmazsanız da olabileceğine inanıyorum. Örneğin, sınıfınızı kök paket klasöründen tam paket adıyla çağırmanız gerekir (ör. My.package.myClass). Yapabilseydim daha spesifik olurdum ama bir java adamı değilim. Bunu birkaç kez karıştırdığımı hatırlıyorum.
frank hadder

17
@BoltClock Çok sayıda kopyayı göstermek için standart bir soruya ihtiyacımız var. Neden bu olamıyor?
Raedwald

21
Kabul edilen cevabı, topluluğun daha değerli bulduğu en üstte olacak şekilde değiştirmeyi düşündünüz mü?
Martin Smith

Yanıtlar:


264

Bu, kodunuzun bağlı olduğu bir sınıf dosyası olduğunda ve derleme zamanında mevcut ancak çalışma zamanında bulunmadığında ortaya çıkar. Derleme süreniz ve çalışma zamanı sınıfyollarınızdaki farklılıkları arayın.


1
Bir kaynak dosyası yanlış ad alanı / paket altında koyarken bu hata oluştu. Her yere koyabileceğimi düşündüm ve derleyici mutluydu. Çalışma zamanının da mutlu olması için daha çalışkan olmalıydım.
CenterOrbit

1
Dosya yükleme sırasında sunucumun belleği bittiğinde bir kez bu hatayı aldım. Yüklemeyi her denediğimde farklı bir hata alırdım. Sonunda bana yeterli yığın alanım olmadığını söyledi.
James

81
Bu cevap mutlaka doğru değildir ve birçok insan için yanıltıcı olacaktır! Aşağıdaki Jared'dan daha iyi cevaba bakınız.
Dave L.

4
@DaveL. Teşekkürler! Jared'in 400+ upvotes ile cevabı aşağıda! -4 yukarı (aşağı?) Oy ile bir cevap, onun üzerinde bir yol var. SO'nun cevap sırası mantığında balık gibi bir şey var.
Saurabh Patil

1
Bu birisi için uzun bir çekim, ancak söz konusu sınıf geçersiz bir karakterle başlatılan bir SimpleDateFormat içerdiği için bu hatayla karşılaştım ('T' yerine ortada T vardı).
Ryan D

817

Bunun derleme zamanı ve çalışma zamanı arasındaki bir sınıf yolu uyuşmazlığından kaynaklanması mümkün olsa da, bu mutlaka doğru değildir.

Bu durumda iki veya üç farklı istisnayı doğrudan kafamızda tutmak önemlidir:

  1. java.lang.ClassNotFoundException Bu istisna, sınıfın sınıf yolunda bulunmadığını gösterir. Bu, sınıf tanımını yüklemeye çalıştığımızı ve sınıfın sınıfyolunda bulunmadığını gösterir.

  2. java.lang.NoClassDefFoundError Bu istisna, JVM'nin bir sınıfın tanımı için iç sınıf tanımı veri yapısına baktığını ve onu bulamadığını gösterir. Bu sınıf yolundan yüklenemediğini söylemekten farklıdır. Genellikle bu, daha önce sınıf yolundan bir sınıf yüklemeye çalıştığımızı gösterir, ancak bir nedenden dolayı başarısız oldu - şimdi sınıfı tekrar kullanmaya çalışıyoruz (ve bu yüzden son kez başarısız olduğu için yüklememiz gerekiyor), ancak ' yeniden yüklemeye bile çalışamayacağız, çünkü daha önce yükleyemedik (ve tekrar başarısız olacağımızdan şüpheleniyoruz). Önceki hata bir ClassNotFoundException veya bir ExceptionInInitializerError (statik başlatma bloğunda bir hata olduğunu gösteren) veya başka herhangi bir sorun olabilir. Mesele şu ki, NoClassDefFoundError mutlaka bir sınıfyolu problemi değildir.


30
NoClassDefFoundError nedenini belirttiğiniz için teşekkürler, bu bana çok yardımcı oldu! Benim durumumda daha önce bir ExceptionInInitializerError atıldı, statik bloklardaki hataları bu şekilde öğrendim.
Thomas

@Jared, Ne zaman alırım, Error: Could not find or load main classhangi hata kategorisine sınıflandırılır?
Vikram

@Pops: "dene" fiillerinin nesnelerini belirtmek için dili daha ayrıntılı hale getirin :)
Jared

1
@Vikram "ana sınıfı bulamadı veya yükleyemedi" bir Java istisnası değildir, başlatıcıdan (JAR ve ana manifest niteliğini inceleyen) kaynaklanır.
Ocak'ta

2
ClassNotFoundException, bir sınıf bir hata veya özel durum atan statik başlatmaya sahip olduğunda da atılır. Muhtemelen o olay için farklı bir isim seçmelilerdi.
coladict

124

İşte gösterilecek kod java.lang.NoClassDefFoundError. Ayrıntılı açıklama için lütfen Jared'in cevabına bakınız .

NoClassDefFoundErrorDemo.java

public class NoClassDefFoundErrorDemo {
    public static void main(String[] args) {
        try {
            // The following line would throw ExceptionInInitializerError
            SimpleCalculator calculator1 = new SimpleCalculator();
        } catch (Throwable t) {
            System.out.println(t);
        }
        // The following line would cause NoClassDefFoundError
        SimpleCalculator calculator2 = new SimpleCalculator();
    }

}

SimpleCalculator.java

public class SimpleCalculator {
    static int undefined = 1 / 0;
}

3
Ve nedeni ilk denemeden sonra jvm zaten işe yaramayacağını ve ikinci kez farklı bir istisna atmayacağını biliyor mu?
ikamen

@ikamen Görünüşe göre bir yere bölündükten sonra başarısız sınıf başlatmayı SimpleCalculatorsıfıra depoladı ? Birisi bu davranış için resmi belgelere bir başvuru var mı?
ᴠɪɴᴄᴇɴᴛ

4
@PhilipRego 'Saf' NoClassDefFoundError ile ne demek istediğinizden emin değilim. İlk new SimpleCalculator()çağrıldığında, ArithmeticException kaynaklı bir ExceptionInInitializerError alırsınız. İkinci aradığınızda new SimpleCalculator(), NoClassDefFoundError'u diğer kadar saf alırsınız. Mesele şu ki, SimpleCalculator.class dışında çalışma zamanında sınıfyolunda olmama dışında bir sebeple NoClassDefFoundError alabilirsiniz.
harperska

36

Java'da NoClassDefFoundError

Tanım:

  1. Java Virtual Machine, derleme zamanında mevcut olan belirli bir sınıfı bulamaz.

  2. Derleme zamanı sırasında bir sınıf varsa, ancak çalışma zamanı sırasında java sınıfyolunda yoksa.

resim açıklamasını buraya girin

Örnekler:

  1. Sınıf Classpath'te değil, bunu bilmenin kesin bir yolu yok, ancak çoğu zaman System.getproperty ("java.classpath") yazdırmak için bir göz atabilirsiniz ve sınıf yolunu en azından buradan alabilirsiniz gerçek çalışma zamanı sınıfyolunuz hakkında bir fikir.
  2. NoClassDefFoundError'un basit bir örneği, sınıfın eksik bir JAR dosyasına ait olması veya JAR'ın sınıfyoluna eklenmemiş olması veya bazen kavanozun adı benim durumumdaki gibi biri tarafından değiştirilmişti. java.lang.NoClassDefFoundError ile başarısız ve neyin yanlış olduğunu merak ediyorduk.

  3. Sadece çalışacağını düşündüğünüz sınıfyoluyla açıkça -classpath seçeneği ile çalışmayı deneyin ve eğer çalışıyorsa birisinin java sınıfyolunu geçersiz kıldığına dair kısa bir işarettir.

  4. JAR dosyasındaki izin sorunu, Java'da NoClassDefFoundError'a da neden olabilir.
  5. XML Yapılandırması'nda yazım hatası, Java'da NoClassDefFoundError öğesine de neden olabilir.
  6. bir pakette tanımlanan derlenmiş sınıfınız, JApplet örneğinde olduğu gibi yüklenirken aynı pakette bulunmazsa, Java'da NoClassDefFoundError atar.

Olası çözümler:

  1. Sınıf, Java Sınıfyolunda kullanılamaz.
  2. J2EE ortamında çalışıyorsanız, Class'ın birden fazla Classloader arasında görünürlüğü de java.lang.NoClassDefFoundError'a neden olabilir, ayrıntılı tartışma için örnekler ve senaryo bölümüne bakın.
  3. Günlük dosyanızda java.lang.ExceptionInInitializerError öğesini kontrol edin. Statik başlatma başarısızlığı nedeniyle NoClassDefFoundError oldukça yaygındır.
  4. NoClassDefFoundError java.lang.LinkageError öğesinin bir alt sınıfı olduğundan, yerel kitaplık gibi bağımlılıklarından biri kullanılamıyorsa da gelebilir.
  5. Başlangıç ​​komut dosyaları Classpath ortam değişkenini geçersiz kılar.
  6. Jar komutunu kullanarak programınızı çalıştırıyor olabilirsiniz ve sınıf manifest dosyasının ClassPath özniteliğinde tanımlanmadı.

Kaynaklar:

NoClassDefFoundError'u Çözmenin 3 Yolu

java.lang.NoClassDefFoundError Sorun kalıpları


1
Mükemmel cevap. Sanırım önerdiğin her şeyi denedim ve hala bu problemi yaşıyorum. Kavanozun baharla çalışması nedeniyle bunlardan bazılarını hariç tutabilirim, ancak java.sql (benim durumumda Hana için sap db sürücüsü) tarafından beğenilmiyor gibi görünüyor.
JE Carter II

Aslında adı System.getproperty ("java.class.path")
RIJIK

33

Bazen kod çalışma zamanında bulunan sınıfın uyumsuz bir sürümü ile derlendiğinde NoClassDefFound hata aldım bulduk. Hatırladığım özel örnek, apache eksen kütüphanesi ile. Aslında çalışma zamanı sınıfyolumda 2 sürüm vardı ve eski ve uyumsuz sürümü alıyordum ve doğru değil, NoClassDefFound hatasına neden oluyordu. Bu, buna benzer bir komut kullandığım bir komut satırı uygulamasındaydı.

set classpath=%classpath%;axis.jar

Kullanarak uygun sürümü almak için başardı:

set classpath=axis.jar;%classpath%;

4
Aynı sorun vardı. Savaş dosyasını Java7 ile derlediğim ortaya çıktı, ancak Tomcat kurulumum Java6 kullanıyordu. Çevresel değişkenlerimi güncellemek zorunda kaldım
duvo

4
Bu böyle olursa Java'nın bir karmaşa içinde olduğunu söyleyeceğim. Bu doğruysa +2. Henüz doğrulanamıyor. Doğru bulunursa tekrar + 1 yapacak (Yorumlarda)
süpernova

7

Bu şimdiye kadar bulduğum en iyi çözüm .

org.mypackageSınıfları içeren bir paketimiz olduğunu varsayalım :

  • HelloWorld (ana sınıf)
  • SupportClass
  • UtilClass

ve bu paketi tanımlayan dosyalar fiziksel olarak dizinin altında D:\myprogram(Windows'ta) veya /home/user/myprogram(Linux'ta) depolanır .

Dosya yapısı şöyle görünecektir: resim açıklamasını buraya girin

Şimdi ise Java'nın çağırmak, biz çalıştırmak için uygulamanın adını belirtin: org.mypackage.HelloWorld. Bununla birlikte, Java'ya paketimizi tanımlayan dosyaları ve dizinleri nerede arayacağını da söylemeliyiz. Programı başlatmak için aşağıdaki komutu kullanmalıyız: resim açıklamasını buraya girin


6

Maven ile Spring Framework kullanıyordum ve projemdeki bu hatayı çözdüm .

Sınıfta bir çalışma zamanı hatası oluştu. Bir özelliği tamsayı olarak okuyordum, ancak özellik dosyasından değeri okurken değeri iki katına çıktı.

Bahar, çalışma zamanının hangi satırda başarısız olduğuna dair tam bir yığın izini vermedi. Basitçe söyledi NoClassDefFoundError. Ama yerel bir Java uygulaması (MVC dışarı alarak) olarak yürüttüğümde ExceptionInInitializerError, gerçek nedeni ve hatayı nasıl izlediğini verdi.

@ xli'nin cevabı bana kodumda neyin yanlış olabileceğine dair bir fikir verdi.


1
Aynı şey bir Servlet'i programlarken de oldu ( NoClassDefFoundErroraslında neden ExceptionInInitalizerErroroldu, neden oldu DateTimeParseException). Biraz yanıltıcı, değil mi? Muhtemelen böyle yapmak için nedenleri olduğunu biliyorum, ama en azından küçük bir ipucuna sahip olmak çok güzel olurdu, bu NoClassDefFoundErrorbaşka bir istisnanın sonucudur, çıkarmaya gerek kalmadan. ExceptionInInitializerErrorTekrar atmak çok daha net olurdu. Bazen ikisi arasındaki bağlantı o kadar açık olmayabilir.
Bartłomiej Zieliński

5

Çalışma zamanı sınıf yükleyicisi tarafından yüklenen sınıflar, java kök yükleyicisi tarafından zaten yüklenen sınıflara erişemediğinde NoClassFoundError alıyorum. Farklı sınıf yükleyicileri farklı güvenlik etki alanlarında olduğundan (java'ya göre) jvm, kök yükleyici tarafından önceden yüklenmiş sınıfların çalışma zamanı yükleyici adres alanında çözümlenmesine izin vermez.

Programınızı 'java -javaagent: tracer.jar [YOUR java ARGS]' ile çalıştırın

Yüklenen sınıfı ve sınıfı yükleyen envanteri gösteren çıktı üretir. Bir sınıfın neden çözülemediğini izlemek çok yararlı.

// ClassLoaderTracer.java
// From: https://blogs.oracle.com/sundararajan/entry/tracing_class_loading_1_5

import java.lang.instrument.*;
import java.security.*;

// manifest.mf
// Premain-Class: ClassLoadTracer

// jar -cvfm tracer.jar manifest.mf ClassLoaderTracer.class

// java -javaagent:tracer.jar  [...]

public class ClassLoadTracer 
{
    public static void premain(String agentArgs, Instrumentation inst) 
    {
        final java.io.PrintStream out = System.out;
        inst.addTransformer(new ClassFileTransformer() {
            public byte[] transform(ClassLoader loader, String className, Class classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException {

                String pd = (null == protectionDomain) ? "null" : protectionDomain.getCodeSource().toString();
                out.println(className + " loaded by " + loader + " at " + new java.util.Date() + " in " + pd);

                // dump stack trace of the thread loading class 
                Thread.dumpStack();

                // we just want the original .class bytes to be loaded!
                // we are not instrumenting it...
                return null;
            }
        });
    }
}

1
Bağlantı öldü. Arşivlenen sürümü deneyin: web.archive.org/web/20131216000019/https://blogs.oracle.com/…
avgvstvs

5

Çok şey görebileceğiniz ilginç bir durum NoClassDefFoundErrorsşu durumlarda:

  1. throwBir RuntimeExceptionde staticsenin sınıfın bloğuExample
  2. Durdurun (ya da bir test senaryosuna atıldığı gibi önemli değilse )
  3. Bu sınıfın bir örneğini oluşturmaya çalışın Example

static class Example {
    static {
        thisThrowsRuntimeException();
    }
}

static class OuterClazz {

    OuterClazz() {
        try {
            new Example();
        } catch (Throwable ignored) { //simulating catching RuntimeException from static block
            // DO NOT DO THIS IN PRODUCTION CODE, THIS IS JUST AN EXAMPLE in StackOverflow
        }

        new Example(); //this throws NoClassDefFoundError
    }
}

NoClassDefErrorExceptionInInitializerErrorstatik bloktan atılır RuntimeException.


Gördüğünüz bu özellikle önemlidir durum NoClassDefFoundErrorssizin de birim testleri .

Bir şekilde, staticblok yürütmesini testler arasında "paylaşırsınız" , ancak ExceptionInInitializerErrorbirincisi sadece bir test durumunda olacaktır. Sorunlu Examplesınıfı kullanan ilk kişi . ExampleSınıfı kullanan diğer test senaryoları atılacaktır NoClassDefFoundErrors.


4
Bu gerçek hayatta oldukça yararlı bir tavsiye parçasıdır. Sınıf nitelik başlatıcıları için de aynı durum vardı. Günlükte gerçek sorunu görme şansınız yalnızca bir kez olur. Sınıf yüklendikten (veya yine de denendiğinde) her şeyi yeniden başlatmanız gerekir.
DailyFrankPeter

4

Aşağıdaki teknik bana birçok kez yardımcı oldu:

System.out.println(TheNoDefFoundClass.class.getProtectionDomain().getCodeSource().getLocation());

burada TheNoDefFoundClass, programınız tarafından kullanılan aynı kütüphanenin daha eski bir sürümünü tercih etmesi nedeniyle "kaybolabilecek" sınıftır. Bu en sık, istemci yazılımı baskın bir konteynere konuşlandırıldığında, kendi sınıf yükleyicileri ve en popüler kütüphanelerin tonlarca eski versiyonuyla donatılmış durumlarla olur.



1

Tüm modüller için preDexLibraries'i devre dışı bırakarak sorunumu giderdim:

dexOptions {
        preDexLibraries false
        ...

1

NoClassDefFoundErrorBir zaman da ortaya çıkabilir statik denemeden başlatıcı etkilenen sınıf çalışır den yüklemek için bir özellikler dosyası örneğin çalışma zamanında mevcut olmayan bir kaynak paketi yüklemek için META-INFdizine, ama yok. Yakalamazsanız NoClassDefFoundError, bazen tam yığın izini göremezsiniz; bunun üstesinden gelmek için geçici olarak bir catchcümle kullanabilirsiniz Throwable:

try {
    // Statement(s) that cause the affected class to be loaded
} catch (Throwable t) {
    Logger.getLogger("<logger-name>").info("Loading my class went wrong", t);
}

Bu yanlış. Eksik bir kaynak size bu hatayı vermeyecektir. Bunu sadece bir sınıf eksikse alacaksınız .
Stephen C

@StephenC Belki bu kısmı daha fazla vurgulamalıyım, ama yazdım for example a properties file that the affected class tries to load from the META-INF directory. Bu aslında başıma geldi NoClassDefFoundErrorve eksik özellikler dosyasını ekleyerek çözmeyi başardım . Bu cevabı tam olarak ekledim çünkü biri bu hatayı belirtilen koşullar altında beklemiyordu.
ᴠɪɴᴄᴇɴᴛ

1
Eksik bir kaynak dosyası tek yolu, çünkü o zaman açıklama çok önemli bir şey kaçırmış olabilir bir kaynak dosyası yüklemek için çalışıyorsunuz eğer istisna tetiklemek olan staticbir kontrolsüz istisna tetiklenir ve sınıf init neden başlatma ... kaybetmek. Statik başlatmadan yayılan kontrol edilmeyen istisnalar bunu yapar.
Stephen C

Eğer yanılıyorsam (yani başarısız staticbaşlatma nedeniyle değil ), davranışı gösteren gerçek bir örnek (yani bir MCVE) görmek ilgimi çekecektir.
Stephen C

1
@StephenC Kesinlikle haklısın :( Bu sorunla karşılaştığım davaya baktım ve gerçekten bir kaynak paketi yüklemeye çalışan statik bir başlatıcı içeriyordu. Nedeni açıklamamı artıracağım / düzelteceğim. dışarı.
ᴠɪɴᴄᴇɴᴛ

1

Başka bir modülün Maven bağımlılığını projeme eklediğimde bu hatayı aldım, sorun nihayet -Xss2mprogramımın JVM seçeneğine eklenerek çözüldü (JDK5.0'dan beri varsayılan olarak bir megabayt). Programın sınıfı yüklemek için yeterli yığını olmadığına inanılıyor.


0

Birisi java.lang.NoClassDefFoundError: org/apache/log4j/Loggerhata nedeniyle buraya gelirse , benim durumumda log4j 2 kullandığım için üretildi (ancak onunla birlikte gelen tüm dosyaları eklemedim) ve bazı bağımlılık kütüphanesi log4j 1'i kullandı. Çözüm Log4j'i eklemekti. 1.x köprü: log4j-1.2-api-<version>.jarlog4j ile gelen kavanoz 2. log4j 2 geçişinde daha fazla bilgi .


0

Aynı projenin iki farklı ödeme kopyası

Benim durumumda, sorun Eclipse'nin aynı projenin iki farklı kopyasını ayırt edememesiydi. Biri gövdede kilitli (SVN sürüm kontrolü) ve diğeri aynı anda bir dalda çalışıyor. Çalışma kopyasındaki bir değişikliği JUnit test örneği olarak denedim, bu da özel bir iç sınıfı kendi başına bir kamu sınıfı olarak çıkarmayı da içeriyordu ve çalışırken, projenin diğer kopyasını başkalarına bakmak için açtım kodun değişmesi gereken bir kısmı. Bir noktada, NoClassDefFoundErrorözel iç sınıfın orada olmadığından şikayet etti; yığın izini çift tıklatmak beni yanlış proje kopyasında kaynak dosyaya getirdi.

Projenin ana kopyasını kapatmak ve test senaryosunu tekrar çalıştırmak sorunu ortadan kaldırdı.


0

Bu hata, denetlenmeyen Java sürümü gereksinimleri nedeniyle ortaya çıkabilir .

Benim durumumda, SDKMAN kullanarak Java 9'dan Java 8'e geçerek yüksek profilli açık kaynaklı bir proje oluştururken bu hatayı çözebildim! .

sdk list java
sdk install java 8u152-zulu
sdk use java 8u152-zulu

Sonra aşağıda açıklandığı gibi temiz bir kurulum yapın.


Maven'i oluşturma aracınız olarak kullanırken , test devre dışı bırakılarak temiz bir 'kurulum' derlemesi yapmak bazen yararlıdır ve genellikle memnuniyet vericidir .

mvn clean install -DskipTests

Artık her şey inşa edildi ve kuruldu, devam edip testleri çalıştırabilirsiniz.

mvn test


0

Ayrıca, kod dosyasını belirli bir paket adıyla bir IDE'den kopyalamanız ve terminal kullanarak çalıştırmayı denemek de olabilir. Önce paket adını koddan kaldırmanız gerekir. Bu benim başıma geliyor.


0

Benim durumumda JDK sürümlerindeki uyumsuzluk nedeniyle bu hatayı alıyordum. Uygulamayı Intelij'den çalıştırmayı denediğimde işe yaramadı, ancak komut satırından çalıştırıldı. Bunun nedeni Intelij'in Java 11 JDK ile kurulumunu çalıştırmaya çalışmasıydı, ancak komut satırında Java 8 JDK ile çalışıyordu. Dosya> Proje Yapısı> Proje Ayarları> Proje SDK'sı altında bu ayarı değiştirdikten sonra benim için çalıştı.


0

Herkes burada bazı Java yapılandırma şeyleri, JVM sorunları vb. Hakkında konuşuyor, benim durumumda hata bu konularla hiç ilgili değildi ve çok önemsiz ve çözülmesi kolay bir nedenim vardı: Denetleyicimdeki uç noktada yanlış bir ek açıklama vardı Spring Boot uygulaması).


0

Liberty sunucusuyla çalışan JavaEE NoClassDefFoundError ile ilginç bir sorun vardı. IMS kaynak bağdaştırıcıları kullanıyordum ve server.xml dosyamda imsudbJXA.rar için kaynak bağdaştırıcısı vardı. İmsudbXA.rar için yeni bir bağdaştırıcı eklediğimde, örneğin DLIException, IMSConnectionSpec veya SQLInteractionSpec nesneleri için bu hatayı almaya başlardım. Neden olduğunu anlayamadım ama sadece imsudbXA.rar kullanarak işim için yeni server.xml oluşturarak çözdüm. Server.xml içinde birden çok kaynak bağdaştırıcısı kullanmak eminim, sadece içine bakmak için zamanım yoktu.


-1

Java, çalışma zamanında A sınıfını bulamadı. A sınıfı, farklı bir çalışma alanından ArtClient maven projesindeydi. Bu yüzden ArtClient'i Eclipse projeme aktardım. Projelerimden ikisi ArtClient'i bağımlılık olarak kullanıyordu. Bunlar için kütüphane referansını proje referansı olarak değiştirdim (Derleme Yolu -> Derleme Yolunu Yapılandır).

Ve sorun ortadan kayboldu.


-1

Aynı sorunu yaşadım ve saatlerce stokta kaldım.

Çözümü buldum. Benim durumumda, bu nedenle tanımlanan statik yöntem vardı. JVM bu sınıfın başka bir nesnesini oluşturamaz.

Örneğin,

private static HttpHost proxy = new HttpHost(proxyHost, Integer.valueOf(proxyPort), "http");

-6

SRC kitaplığından iki dosyayı kaldırdıktan sonra bu mesajı aldım ve onları geri getirdiğimde bu hata mesajını görmeye devam ettim.

Benim çözümüm: Eclipse'i yeniden başlatın. O zamandan beri bu mesajı bir daha görmedim :-)


4
Bu en çok oylanan cevapla açıklandı, ilk derlediğinizde dosyalar oradaydı, sonra bazı dosyaları kaldırdınız, sınıflar silindi, bu yüzden çalışma zamanında ClassNotFound'u aldınız, sonra onları geri getirdiniz, ancak yine de Eclipse oluşturulan sınıflar hala eksikti, ancak Eclipse'i yeniden başlattıktan sonra, çalışma alanı yenilendi ve sınıflar tekrar kullanılabilirdi, ancak genel olarak bu bir çözüm veya geçici çözüm değil, çözüm, çalışma zamanında hangi sınıfın / kavanozun eksik olduğunu bulmaktır sınıf yolu.
Jose Manuel Gomez Alvarez

-7

Emin bu maçları olun module:appve module:lib:

android {
    compileSdkVersion 23
    buildToolsVersion '22.0.1'
    packagingOptions {
    }

    defaultConfig {
        minSdkVersion 17
        targetSdkVersion 23
        versionCode 11
        versionName "2.1"
    }

3
Çözümünüz bu ortak sorunla herhangi bir şekilde nasıl ilişkilidir?
Taavi Ilves

Örnek konfigürasyonu dengeli değil (üç {sve iki }). Tamir edebilir misin?
Peter Mortensen
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.