677 Stimmen

Warum erhalte ich einen NoClassDefFoundError in Java?

Ich bekomme eine NoClassDefFoundError wenn ich meine Java-Anwendung ausführe. Was ist typischerweise die Ursache dafür?

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.

0voto

Thomas McSwain Punkte 53

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.

0voto

pixel Punkte 8064

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.

0voto

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).

0voto

off99555 Punkte 3261

Es könnte auch daran liegen, dass Sie die Codedatei aus einer IDE mit einem bestimmten Paketnamen kopieren und versuchen wollen, sie mit dem Terminal auszuführen. Sie müssen den Paketnamen zunächst aus dem Code entfernen. Das passiert bei mir.

0voto

Brent Bradburn Punkte 45995

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X