jar清单中的绝对路径名与相对路径名

我想在固定位置引用一个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上运行。

Class-Path属性被解释为URL列表,因此,要使用绝对路径(此处用URL表示),它应该以schema开头并使用正斜杠。

请尝试以下方法:

 Class-Path: file:///C:/Users/Admin/workspace/TestGradle/commons-math3-3.6.1.jar