Я пытаюсь запустить исполняемый файл jar из файла оболочки. путь моей банки:
/home/flussi/xmlEncoder/encoder.jar
Но я всегда получаю эту ошибку:
Exception in thread "main" java.lang.NoClassDefFoundError: smaf.encoder.Encoder
at java.lang.Class.initializeClass(libgcj.so.7rh)
Caused by: java.lang.ClassNotFoundException: java.nio.file.LinkOption not found in gnu.gcj.runtime.SystemClassLoader{urls=[file:/home/flussi/xmlEncoder/encoder.jar], parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}
at java.net.URLClassLoader.findClass(libgcj.so.7rh)
at java.lang.ClassLoader.loadClass(libgcj.so.7rh)
at java.lang.ClassLoader.loadClass(libgcj.so.7rh)
at java.lang.Class.initializeClass(libgcj.so.7rh)
Команда оболочки
java -jar /home/flussi/xmlEncoder/encoder.jar
2 ответа
В трассировке стека есть свидетельства того, что вы пытаетесь использовать цепочку инструментов GCJ для запуска этого JAR-файла. (И доказательства в вашем комментарии ниже подтверждают это.)
Это настоящая проблема.
К сожалению, разработка GCJ застопорилась до того, как они завершили поддержку Java 1.5. И похоже, что вы пытаетесь запустить JAR-файл, который зависит от класса Java 1.7 (java.nio.file.LinkOption
)
Моя рекомендация:
- удалите установленные пакеты Java GCJ
- установите пакеты OpenJDK Java 8 (1.8) или более поздней версии 1 из диспетчера пакетов или загрузите и установите RPM для Java 8 или более поздней версии с сайта Oracle.
Если вы не управляете машиной, попросите менеджеров сделать это. Или попробуйте запустить файл JAR в другом месте.
Скорее всего, потребуется существенная переписать приложение, чтобы оно работало на GCJ. И это было бы напрасной тратой усилий, поскольку GCJ фактически является мертвой платформой Java.
1 - Java 7 будет работать, но пару лет назад она была закрыта.
Привет. Лучший способ запустить Java-приложение - сначала установить переменные CLASS_PATH и PATH. Если ваш текущий файл jar зависит от внешних файлов jar, вы столкнетесь с множеством проблем. Лучше установите переменную пути, как показано ниже, и запустите приложение: -
#!/usr/bin/ksh
export PATH=/usr/java/bin:$PATH
# =/usr/java/bin is your java bin folder
#set environment variable CP with all the jar libraries
CP=/home/flussi/xmlEncoder/encoder.jar
CP=${CP}:/other/jar/somejar.jar
java -Xmx256M -classpath "$CP" "com.myproj.Example"
Это com.myproj.Example
ваш файл класса java внутри encoder.jar
, где вы объявили public static void main
Похожие вопросы
Связанные вопросы
Новые вопросы
java
Java - это язык программирования высокого уровня. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег редко используется отдельно и чаще всего используется вместе с [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] и [maven].