2016-12-16 2 views
0

Ich habe Datei jar unter C gestellt: \ tempWarum erhalte ich einen NoClassDefFoundError beim Ausführen einer JAR-Datei von CMD?

innerhalb jar-Manifest-Datei enthält und alle zugehörigen JAR-Dateien gibt es unter lib Ordner

Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.9.1 
Created-By: 1.8.0_111-b14 (Oracle Corporation) 
Class-Path: lib/httpclient-4.2.1.jar lib/httpcore-4.2.1.jar lib/common s-logging-1.1.1.jar lib/httpclient-cache-4.2.5.jar lib/httpmime-4.2.5.jar lib/log4j-1.2.13.jar lib/log4j-api-2.0-beta9.jar lib/log4j-core-2.0-beta9.jar lib/gson-2.2.4-javadoc.jar lib/gson-2.2.4-sources.jar lib/gson-2.2.4.jar 
X-COMMENT: Main-Class will be added automatically by build 
Main-Class: abc.service.Main 

Wenn ich als

ausführen
java -jar C:\temp\test.jar 

I Erhalte den folgenden Fehler:

+1

Meinst du, dein 'lib'-Verzeichnis ist * innerhalb * der JAR-Datei? Ich denke nicht, dass das helfen wird. Versuchen Sie, das lib-Verzeichnis mit den JAR-Dateien direkt in 'c: \ temp' zu platzieren und versuchen Sie es erneut ... –

+0

ja. Alle Abhängigkeits-JAR-Dateien befinden sich in der Bibliothek von test.jar. – user3312405

+0

Richtig, soweit ich weiß, funktioniert das 'Class-Path'-Attribut eines JAR-Dateimanifests nicht so. –

Antwort

1

Das geht davon aus Die Class-Path bezieht sich auf JAR-Dateien innerhalb der JAR-Datei. Es funktioniert nicht so. Von "Adding classes to the JAR file's classpath":

Note: The Class-Path header points to classes or JAR files on the local network, not JAR files within the JAR file or classes accessible over Internet protocols. To load classes in JAR files within a JAR file into the class path, you must write custom code to load those classes. For example, if MyJar.jar contains another JAR file called MyUtils.jar, you cannot use the Class-Path header in MyJar.jar's manifest to load classes in MyUtils.jar into the class path.

die JAR-Dateien So entpacken Sie neben Ihrem Haupt JAR-Datei zu sein.

Verwandte Themen