Ho utilizzato le istruzioni trovate a https://stackoverflow.com/a/5893391/14731 per aggiungere una voce arbitraria all'attributo Class-Path
. Ecco il mio file MANIFEST.MF:JAR eseguibile ignora il proprio attributo Class-Path
Manifest-Version: 1.0
Class-Path: jace-runtime.jar
Main-Class: org.jace.examples.Test
ho definito org.jace.examples.Test come segue:
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"));
}
}
dove org.jace.util.ShutdownHook
è definito in jace-runtime.jar
. Quando invoco java -jar peer_example1.jar
ottengo il seguente output:
classpath: peer_example1.jar
Exception in thread java.lang.ClassNotFoundException "principale": org.jace.util.ShutdownHook
In altre parole, Java è l'aggiunta del file JAR eseguibile al classpath ma ignorando Class-Path
. Se invoco java -cp jace-runtime.jar;peer_example1.jar org.jace.examples.Test
ottengo i risultati attesi:
classpath: jace-runtime.jar;peer_example1.jar
Tutte le idee?
Potrebbe essere necessario ../jace-runtime.jar se la radice jar viene considerata come directory di lavoro corrente. –
@MarkoTopolnik: l'ho appena provato. Non ha funzionato. – Gili
Ma hai provato ad accedere ad un corso in quell'altro vaso?Sembra che java.class.path non rifletta il classpath letto dal manifest. –