Ich bekomme eine NoClassDefFoundError
wenn ich meine Java-Anwendung ausführe. Was ist typischerweise die Ursache dafür?
Antworten
Zu viele Anzeigen?Ich hatte diesen Fehler, konnte aber anhand dieses Threads die Lösung nicht herausfinden, sondern habe ihn selbst gelöst.
Für mein Problem habe ich diesen Code kompiliert:
package valentines;
import java.math.BigInteger;
import java.util.ArrayList;
public class StudentSolver {
public static ArrayList<Boolean> solve(ArrayList<ArrayList<BigInteger>> problems) {
//DOING WORK HERE
}
public static void main(String[] args){
//TESTING SOLVE FUNCTION
}
}
Ich habe diesen Code dann in einer Ordnerstruktur kompiliert, die wie /Projektname/valentines Das Kompilieren funktionierte gut, aber der Versuch, ihn auszuführen: java StudentSolver
Ich habe den NoClassDefError erhalten.
Um dieses Problem zu beheben, habe ich einfach die Datei entfernt: package valentines;
Ich bin nicht sehr versiert in Java-Paketen und so, aber so habe ich meinen Fehler behoben, also tut mir leid, wenn dies bereits von jemand anderem beantwortet wurde, aber ich konnte es nicht auf mein Problem interpretieren.
Ich hatte ein interessantes Problem mit NoClassDefFoundError in JavaEE bei der Arbeit mit Liberty Server. Ich habe IMS-Ressourcenadapter verwendet und meine server.xml hatte bereits einen Ressourcenadapter für imsudbJXA.rar. Als ich einen neuen Adapter für imsudbXA.rar hinzufügte, bekam ich diesen Fehler für Instanzobjekte für DLIException, IMSConnectionSpec oder SQLInteractionSpec. Ich konnte nicht herausfinden, warum, aber ich habe es gelöst, indem ich eine neue server.xml für meine Arbeit mit nur imsudbXA.rar erstellt habe. Ich bin sicher, dass die Verwendung mehrerer Ressourcenadapter in der server.xml in Ordnung ist, ich hatte nur keine Zeit, das zu prüfen.
Jeder spricht hier über einige Java-Konfiguration Zeug, JVM-Probleme usw., in meinem Fall der Fehler war nicht im Zusammenhang mit diesen Themen überhaupt und hatte eine sehr triviale und leicht zu lösen Grund: Ich hatte eine falsche Annotation an meinem Endpunkt in meinem Controller (Spring Boot-Anwendung).
Dieser Fehler kann verursacht werden durch ungeprüfte Java-Version Anforderungen.
In meinem Fall konnte ich diesen Fehler bei der Erstellung eines hochkarätigen Open-Source-Projekts beheben, indem ich von Java 9 zu Java 8 wechselte und SDKMAN! .
sdk list java
sdk install java 8u152-zulu
sdk use java 8u152-zulu
Dann führen Sie eine Neuinstallation wie unten beschrieben durch.
Bei der Verwendung von Maven als Erstellungswerkzeug zu verwenden, ist es manchmal hilfreich - und in der Regel erfreulich -, eine sauber installieren" bauen mit deaktivierten Tests .
mvn clean install -DskipTests
Nun, da alles erstellt und installiert wurde, können Sie die Tests durchführen.
mvn test
1 Stimmen
Ich glaube, es kann auch passieren, wenn Sie Ihr Java-Programm nicht mit der richtigen Syntax ausführen. Zum Beispiel müssen Sie Ihre Klasse aus dem Root-Bin-Ordner mit dem vollständigen Paketnamen aufrufen (z. B. my.package.myClass). Ich würde genauer sein, wenn ich könnte, aber ich bin kein großer Java-Kenner. Ich kann mich nur daran erinnern, dass ich das ein paar Mal vermasselt habe.