Установка пути к классу Java для загрузки файла класса

Я плохо знаком с Java, и я не уверен, как получить доступ к файлу класса, расположенному в определенном каталоге от отдельной банки программы.

Например, у меня есть сторонний файл банки, расположенный в/, который, как предполагается, загружает MyClass, расположенный в/mylib/MyClass.class, таким образом, я пытался работать:

java -jar mainprog.jar -classpath "/mylib" MyClass

но я получаю ошибку:

Exception in thread "main" java.lang.NoClassDefFoundError: MyClass
Caused by: java.lang.ClassNotFoundException: MyClass
        at java.net.URLClassLoader$1.run(URLClassLoader.java:221)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:209)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:324)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:269)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:337)

Что я делаю неправильно?

7
задан Cerin 25 January 2010 в 13:21
поделиться

2 ответа

При использовании «- JAR» Тогда Только атрибут класса атрибут , определенный в INF / MANYSEST.MF Файл внутри банка файл будет влиять на класс.

Это также будет игнорировать аргумент MyClass (или более конкретно: интерпретировать его как аргумент к основным классам, определенным в mainest.mf ).

Если вы просто хотите назвать класс из этой банки называть это так:

java -cp mainprog.jar:/mylib MyClass
// or using this one on windows:
java -cp mainprog.jar;/mylib MyClass
13
ответ дан 6 December 2019 в 12:50
поделиться

В своей командной строке Вы пытаетесь запустить MyClass как программу, которая, основываясь на Вашем описании, не является тем, что Вам нужно.

Вам нужно выяснить, что является основным классом, который используется для выполнения программы в банке. Файл jar можно распаковать с помощью jar -xf mainprog.jar и посмотреть на файл META-INF/MANIFEST.MF. В нем должна быть запись, указывающая на то, что основным классом jar является (сейчас я не могу вспомнить имя записи).

После смены командной строки на нечто подобное:

java -classpath /mainprog.jar:/mylib package.name.to.jar.MainClass
3
ответ дан 6 December 2019 в 12:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: