【发布时间】:2017-12-24 15:38:35
【问题描述】:
我想在固定位置引用一个 jar 文件以供多个可执行 jar 使用,而不是在每个可执行文件中包含该 jar。我有以下设置,效果很好
commons-math3-3.6.1.jar 存在于 testgradle 目录中。 TestGradle.jar 包含 main 方法,存在于目录 testgradle/build/libs
从我运行的 testgradle/build/libs:
java -jar TestGradle.jar
一切正常。 TestGradle.jar 中的清单包含:
Manifest-Version: 1.0
Class-Path: ../../commons-math3-3.6.1.jar
Main-Class: com.spgxyz.test.testg
但是我想使用绝对路径来处理 commons-math3-3.6.1.jar 以便像 TestGradle.jar 这样的可执行 jar 可以从它们所在的任何目录中使用它。但是,如果我将 TestGradle.jar 清单更改为包括完整路径:
Manifest-Version: 1.0
Class-Path: C:\Users\Admin\workspace\TestGradle\commons-math3-3.6.1.ja
r
Main-Class: com.spgxyz.test.testg
然后是命令:
java -jar TestGradle.jar
从 testgradle/build/libs 运行产生:
Error: Could not find or load main class com.spgxyz.test.testg
Caused by: java.lang.ClassNotFoundException: com.spgxyz.test.testg
我尝试对清单进行各种编辑以尝试解决此问题,例如:
Manifest-Version: 1.0
Class-Path: . C:\Users\Admin\workspace\TestGradle\commons-math3-3.6.1.
jar
Main-Class: com.spgxyz.test.testg
Manifest-Version: 1.0
Class-Path: TestGradle.jar C:\Users\Admin\workspace\TestGradle\commons
-math3-3.6.1.jar
Main-Class: com.spgxyz.test.testg
这些都产生相同的错误。如果有人能对这里发生的事情有所了解,我将不胜感激。在 Windows 上运行。
【问题讨论】: