我曾經在https://stackoverflow.com/a/5893391/14731發現說明添加到Class-Path
的屬性的任意條目。這裏是我的MANIFEST.MF文件:可執行的JAR忽略了自己的類路徑屬性
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
我得到以下的輸出:在線程「主要」拋出java.lang.ClassNotFoundException
classpath: peer_example1.jar
例外: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:我剛試過。它沒有工作。 – Gili
但你試圖在其他jar訪問類?看起來,java.class.path並不反映從清單中讀入的類路徑。 –