Java CMake:使用多个jar依赖项生成jar文件(源代码外构建)
我花了几天时间用CMake(3.5.2)做了以下工作。使用源代码外构建,创建一个依赖于多个外部jar依赖项的jar文件。在我的清单中,我只想指定主类,而不想指定其他类 这是我在croco/owl2gdb/CMakeLists.txt目录中的内容:Java CMake:使用多个jar依赖项生成jar文件(源代码外构建),java,cmake,Java,Cmake,我花了几天时间用CMake(3.5.2)做了以下工作。使用源代码外构建,创建一个依赖于多个外部jar依赖项的jar文件。在我的清单中,我只想指定主类,而不想指定其他类 这是我在croco/owl2gdb/CMakeLists.txt目录中的内容: cmake_minimum_required (VERSION 3.5) find_package(Java REQUIRED) include(UseJava) project (owl2gdb) SET(CLASSPATH ${CMAKE_
cmake_minimum_required (VERSION 3.5)
find_package(Java REQUIRED)
include(UseJava)
project (owl2gdb)
SET(CLASSPATH ${CMAKE_CURRENT_SOURCE_DIR}/lib/commons-lang3-3.3.2.jar:${CMAKE_CURRENT_SOURCE_DIR}/lib/concurrentlinkedhashmap-lru-1.4.2.jar:${CMAKE_CURRENT_SOURCE_DIR}/lib/HermiT.jar)
list(APPEND CMAKE_JAVA_INCLUDE_PATH ${CLASSPATH})
SET(SOURCE
${CMAKE_CURRENT_SOURCE_DIR}/src/owl2gdb/OWL2GDB.java
${CMAKE_CURRENT_SOURCE_DIR}/src/graphdatabase/GraphDatabase.java
${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/CPPFileWriter.java
${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/CppHeaderFileWriter.java
${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/CppSourceFileWriter.java
${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/CppTextTemplate.java
${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/GraphDatabaseHeaderWriter.java
${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/GraphDatabaseSourceWriter.java
${CMAKE_CURRENT_SOURCE_DIR}/src/knowledge/MyOntology.java
${CMAKE_CURRENT_SOURCE_DIR}/src/knowledge/MyOWLClass.java
${CMAKE_CURRENT_SOURCE_DIR}/src/knowledge/MyOWLDataProperty.java
${CMAKE_CURRENT_SOURCE_DIR}/src/knowledge/MyOWLObjectProperty.java
${CMAKE_CURRENT_SOURCE_DIR}/src/knowledge/MyOWLOntology.java
${CMAKE_CURRENT_SOURCE_DIR}/src/tool/Util.java)
set(JAVA_JAR_ENTRY_POINT owl2gdb/OWL2GDB)
add_jar(owl2gdb ${SOURCE})
add_custom_command(TARGET owl2gdb
POST_BUILD
COMMAND jar u0fm owl2gdb.jar ${CMAKE_CURRENT_SOURCE_DIR}/META-INF/MANIFEST.MF ${SOURCE}
)
在我的根目录中,我执行以下操作:
mkdir_构建
cd_构建
克马克
制造
owl2gdb.jar确实是在_build/owl2gdb/owl2gdb.jar中生成的。然后
cd owl2gdb
java-jar owl2gdb.jar
给我
线程“main”java.lang.NoClassDefFoundError中出现异常:com/martiansoftware/jsap/StringParser
基本上,我的owl2gdb.jar中不包括外部jar。我真的不知道从这里到哪里去。cmake没有正确使用cmake\u JAVA\u INCLUDE\u路径是否存在问题?我的CMakeLists.txt中缺少什么
一个jar tf owl2gdb.jar
返回:
META-INF/
META-INF/MANIFEST.MF
tool/Util.class
graphdatabase/GraphDatabase$1.class
graphdatabase/GraphDatabase.class
cpp/CPPFileWriter.class
cpp/GraphDatabaseHeaderWriter.class
cpp/CppHeaderFileWriter.class
cpp/CppTextTemplate.class
cpp/CppSourceFileWriter.class
cpp/GraphDatabaseSourceWriter.class
owl2gdb/OWL2GDB.class
knowledge/MyOWLClass.class
knowledge/MyOWLDataProperty.class
knowledge/MyOntology.class
knowledge/MyOWLObjectProperty.class
knowledge/MyOWLOntology.class
usr/local/me/github/croco/owl2gdb/src/owl2gdb/OWL2GDB.java
usr/local/me/github/croco/owl2gdb/src/owl2gdb/src/graphdatabase/GraphDatabase.java
usr/local/me/github/croco/owl2gdb/src/owl2gdb/src/cpp/CPPFileWriter.java
usr/local/me/github/croco/owl2gdb/src/owl2gdb/src/cpp/CppHeaderFileWriter.java
usr/local/me/github/croco/owl2gdb/src/owl2gdb/src/cpp/CppSourceFileWriter.java
usr/local/me/github/croco/owl2gdb/src/owl2gdb/src/cpp/CppTextTemplate.java
usr/local/me/github/croco/owl2gdb/src/owl2gdb/src/cpp/GraphDatabaseHeaderWriter.java
usr/local/me/github/croco/owl2gdb/src/owl2gdb/src/cpp/GraphDatabaseSourceWriter.java
usr/local/me/github/croco/owl2gdb/src/owl2gdb/src/knowledge/MyOntology.java
usr/local/me/github/croco/owl2gdb/src/owl2gdb/src/knowledge/MyOWLClass.java
usr/local/me/github/croco/owl2gdb/src/owl2gdb/src/knowledge/MyOWLDataProperty.java
usr/local/me/github/croco/owl2gdb/src/owl2gdb/src/knowledge/MyOWLObjectProperty.java
usr/local/me/github/croco/owl2gdb/src/owl2gdb/src/knowledge/MyOWLOntology.java
usr/local/me/github/croco/owl2gdb/src/owl2gdb/src/tool/Util.java
这是我清单上唯一的东西:
Main-Class: owl2gdb.OWL2GDB
不要使用CMake,而是使用为java构建的工具,如ivy、ant等。@CantleepNow CMake已经具备了这些功能。我只是想学习如何正确使用它们。我用ANT实现了我的目标。我只想了解我的CMakeLists.txt中缺少什么。