【发布时间】:2012-05-13 06:30:45
【问题描述】:
我使用Maven - how can I add an arbitrary classpath entry to a jar 中的说明将任意条目添加到Class-Path 属性。这是我的MANIFEST.MF 文件:
Manifest-Version: 1.0
Class-Path: jace-runtime.jar
Main-Class: org.jace.examples.Test
我将 org.jace.examples.Test 定义如下:
public class Test
{
public static void main(String[] args)
{
System.out.println("classpath: " + System.getProperty("java.class.path"));
System.out.println("PeerExample: " + Class.forName("org.jace.util.ShutdownHook"));
}
}
其中org.jace.util.ShutdownHook 在jace-runtime.jar 中定义。当我调用 java -jar peer_example1.jar 时,我得到以下输出:
classpath: peer_example1.jar
线程“主”java.lang.ClassNotFoundException 中的异常:org.jace.util.ShutdownHook
换句话说,Java 将可执行 JAR 文件添加到类路径中,但忽略了 Class-Path。如果我调用 java -cp jace-runtime.jar;peer_example1.jar org.jace.examples.Test 我会得到预期的输出:
classpath: jace-runtime.jar;peer_example1.jar
有什么想法吗?
【问题讨论】:
-
如果 jar 根被视为当前工作目录,您可能需要 ../jace-runtime.jar。
-
@MarkoTopolnik:我刚试过。它没有用。
-
但是您是否尝试过访问另一个 jar 中的类?似乎 java.class.path 没有反映从清单中读取的类路径。
-
@MarkoTopolnik:是的,我使用 Class.forName() 查找 jace-runtime.jar 中定义的类,但没有找到。