我很难找出如何在manifest.mf中定义外部jar。当我使用如下所示的类路径时,jar文件无法执行
Manifest-Version: 1.0
Sealed: true
Main-Class: org.test.MainClass
Class-Path: /Program Files (x86)/Testfolder/testlibrary/hibernate3.jar
/Program Files (x86)/Testfolder/testlibrary/org.springframework.web-3.1.1.RELEASE.jar
当我给出如下所示的正确的完整类路径时,找不到或加载了Main类
Manifest-Version: 1.0
Sealed: true
Main-Class: org.test.MainClass
Class-Path: D:/Program Files (x86)/Testfolder/testlibrary/hibernate3.jar
D:/Program Files (x86)/Testfolder/testlibrary/org.springframework.web-3.1.1.RELEASE.jar
有人知道我在做什么错吗?
答案 0 :(得分:1)
类路径属性
应用程序的清单可以指定一个或多个相对URL,这些URL引用其所需的其他库的JAR文件和目录。这些相对URL相对于加载包含应用程序的代码库而言。
应用程序(或更常见的是JAR文件)使用清单属性
Class-Path
指定所需的库的相对URL 。如果在宿主Java虚拟机上找不到其他库的实现,则此属性列出了URL,以搜索这些库的实现。这些相对URL可能包括应用程序所需的任何库或资源的JAR文件和目录。假定不以斜杠(/
)结尾的相对URL引用JAR文件。例如:Class-Path: servlet.jar infobus.jar acme/beans.jar images/
JAR文件的清单中最多可以指定一个
Class-Path
头。当前,出于安全原因, URL必须相对于JAR文件的代码库 。因此,远程可选程序包将源自与应用程序相同的代码库。
每个相对URL都是根据加载了包含应用程序或库的代码库解析的。 如果结果URL无效或引用了找不到的资源,则它将被忽略。
答案 1 :(得分:1)
我发现我也可以将绝对路径定义为
Class-Path: file:///D:/Program%20Files%20(x86)
这对我来说很好。找不到与主类有关的错误与类路径中的错误有关,如上所示使用绝对路径将解决此问题。