Heim  >  Artikel  >  Java  >  Wie kann ich den „NoClassDefFoundError“ in Maven beheben, wenn ich ihn über die Befehlszeile ausführe?

Wie kann ich den „NoClassDefFoundError“ in Maven beheben, wenn ich ihn über die Befehlszeile ausführe?

Susan Sarandon
Susan SarandonOriginal
2024-10-27 04:01:02820Durchsuche

How can I resolve the

Abhängigkeitsauflösung über Shade Plugin für NoClassDefFoundError

Bei einer ersten Erfahrung mit Maven kann es zu Inkonsistenzen zwischen Eclipse und der Befehlszeilenverwendung kommen Abhängigkeitsmanagement. Trotz erfolgreicher Maven-Projekterstellung und dem Hinzufügen von Abhängigkeiten in Eclipse kann die Ausführung des Projekts über die Befehlszeile zu einem NoClassDefFoundError führen.

Standardmäßig verpackt Maven Abhängigkeiten separat und schließt sie nicht in die kompilierte JAR-Datei ein. Diese Auslassung führt dazu, dass die Java VM beim Versuch, Bibliotheksklassen während der Ausführung zu finden, fehlschlägt.

Anstatt Bibliotheken manuell zum Klassenpfad hinzuzufügen, bietet das Maven-Shade-Plugin eine effizientere Lösung. Es erstellt ein „Über-JAR“, das Anwendungsklassen mit dem erforderlichen Bibliothekscode kombiniert.

Um dies zu implementieren, fügen Sie die folgende Plugin-Konfiguration zu Ihrem POM hinzu:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.5.2</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Nachdem Sie diese Konfiguration hinzugefügt haben, Führen Sie die folgenden Befehle erneut aus:

$ mvn package
$ java -cp target/bil138_4-0.0.1-SNAPSHOT.jar tr.edu.hacettepe.cs.b21127113.bil138_4.App

Weitere Konfigurationsoptionen, wie die Angabe enthaltener JARs oder einer ausführbaren JAR-Datei, finden Sie im Abschnitt „Beispiele“ auf der Maven-Shade-Plugin-Website.

Das obige ist der detaillierte Inhalt vonWie kann ich den „NoClassDefFoundError“ in Maven beheben, wenn ich ihn über die Befehlszeile ausführe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn