Ich habe ein utils-Projekt, das Abhängigkeiten wieClassNotFoundException in depdendent Projekt
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcmail-jdk15on</artifactId>
<version>1.56</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.9</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.0</version>
</dependency>
Und dann mein anderes Projekt ist abhängig von utils hat:
<dependency>
<groupId>com.mycomp.proj</groupId>
<artifactId>utils</artifactId>
<version>${utils.version}</version>
</dependency>
Dies funktioniert ohne Probleme. Dann habe ich dieses Paket utils:
<dependency>
<groupId>net.sf.jopt-simple</groupId>
<artifactId>jopt-simple</artifactId>
<version>4.9</version>
</dependency>
I mvn clean install
utils zuerst, dann mein Hauptprojekt und beide ohne Fehler zu bauen. Aber aus irgendeinem Grund, wenn ich versuche, das Hauptprojekt zu laufen, wenn sie die Klasse erreicht, die Jopt-einfach verwendet, stürzt mit
ClassNotFoundException: joptsimple.OptionException
Jede Idee, warum ich mein Hauptprojekt gut ohne Jopt-einfach in der laufen kann utils Paket, aber sobald ich es als eine Abhängigkeit hinzufügen, scheitert es? Ich habe das utils-Paket in meinem m2-Repo auch manuell gelöscht und es neu aufgebaut, um zu sehen, ob das behoben wurde, aber es nicht.
Wenn Sie ohne die Abhängigkeit bauen konnten, bedeutet dies wahrscheinlich, dass die Klasse bereits im Klassenpfad vorhanden war. Die Einführung der Bibliothek könnte mehrere Implementierungen der gleichen Klasse oder deren Überschreibung verursachen. Könnten Sie den relevanten 'mvn-Abhängigkeit: Baum' Ihres Projekts, in dem Sie utils verwenden, teilen? – nullpointer
Die unten hinzugefügte Abhängigkeit hebt die obige Abhängigkeit auf. Wenn Sie Eclipse verwenden, können Sie das Effektive Pom überprüfen. oder überprüfen Sie in der Abhängigkeitsprüfung, welche davon tatsächlich enthalten ist. Stellen Sie sicher, dass sich das JAR nicht bereits in einem Build-Pfad Ihres Projekts befindet. –