2017-11-15 3 views
0

Ich verwende CMake, um JAR-Datei mit add_jar Befehl zu kompilieren. Das Problem ist, dass der Code nicht ausgeführt wird, wenn ich INCLUDE_JARS hinzufügen möchte, um die Abhängigkeit von externem jar anzugeben. Hier ist der Code Beispiel:CMake add_jar mit INCLUDE_JARS funktioniert nicht

add_jar(testJar 
    SOURCES 
     sources/com/test/Main.java 
    INCLUDE_JARS 
     ${CMAKE_SOURCE_DIR}/extern/org.json/json-20171018.jar 
    ENTRY_POINT com.test.Main 
) 

die testJar Laufen mit "java -jar testJar.jar" gibt mir die folgende Fehlermeldung:

Exception in thread "main" java.lang.NoClassDefFoundError: org/json/JSONException 

Das org.json Glas in Classpath sein sollte, nicht wahr? Das Hinzufügen der Manifestdatei mit Klassenpfad löst das Problem, aber gibt es eine Möglichkeit, dies ohne die Manifestdatei zu tun?

Und ja, würde ich Maven oder gradle für den Bau, sondern als von Beschränkungen in dem Projekt kann ich nicht tun :)

Antwort

0

Die Option INCLUDE_JARS nur dafür sorgt, dass die gegebene externe jar des Klassenpfad hinzugefügt wird, auf Kompilierung der angegebenen Java-Quelldateien. Die JAR-Datei wird weder in das Erstellungsverzeichnis kopiert noch der von add_jar generierten JAR-Datei hinzugefügt.

Wenn die Aufnahme des externen jar in der Manifest-Datei für Sie keine Option ist, manuell Pfad zur Klasse hinzufügen auf die testJar läuft, d.h .:

java -cp path/to/json-20171018.jar -jar testJar.jar 
Verwandte Themen