jar清单中的绝对路径名与相对路径名
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:UsersAdminworkspaceTestGradlecommons-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:UsersAdminworkspaceTestGradlecommons-math3-3.6.1.
jar
Main-Class: com.spgxyz.test.testg
Manifest-Version: 1.0
Class-Path: TestGradle.jar C:UsersAdminworkspaceTestGradlecommons
-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
以上是关于jar清单中的绝对路径名与相对路径名的主要内容,如果未能解决你的问题,请参考以下文章