我想在固定位置引用一个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上运行。
答案 0 :(得分:3)
Class-Path
属性被解释为URL列表,因此,要使用绝对路径(在此处用URL表示),它应该以schema开头并使用正斜杠。
尝试以下方法:
Class-Path: file:///C:/Users/Admin/workspace/TestGradle/commons-math3-3.6.1.jar