Исполняемый файл JAR игнорирует собственный класс -Атрибут пути

Я использовал инструкции, найденные в Maven -, как добавить произвольную запись пути к классам в банку , чтобы добавить произвольную запись в атрибут 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 Exception in thread "main" 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

. Есть идеи?

13
задан Gray 16 January 2019 в 20:46
поделиться