在Manifest.mf Class-Path中有绝对路径

时间:2016-08-16 08:14:39

标签: java classpath manifest

我试图在MANIFEST.MF文件的Class-Path部分中使用绝对路径,但它似乎无法正常工作。

我使用绝对路径的原因是所讨论的库是一个专有的库,我不能自由地重新分发。它安装在公司机器上的常量路径(/ opt / ...)上,所以我使用这个绝对路径是有意义的。

我的清单文件如下:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: Me
Class-Path: /opt/path/to/library.jar
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_102
Main-Class: com.me.Main

程序运行正常(因此正确设置了主类等),但是当我尝试从library.jar加载一个类时,我得到一个NoClassDefFoundError

我尝试在主要方法的开头添加以下代码:

ClassLoader cl = ClassLoader.getSystemClassLoader();

URL[] urls = ((URLClassLoader)cl).getURLs();

for(URL url: urls){
    System.out.println(url.getFile());
}

但它只打印出我的jar文件的名称。

显然,使用" java -jar"也忽略了$CLASSPATH系统变量,所以即使这似乎也不是一个选项。

除了将库复制(或sym链接)到我自己的jar的位置之外,还有其他解决方案吗?

0 个答案:

没有答案