Файл jar Java не работает в терминале Linux - PullRequest
2 голосов
/ 26 января 2012

Я пытаюсь запустить файл .jar в терминале в Linux, но выдает ошибку:

[root@localhost dist]# java -jar helloworld.jar
Exception in thread "main" java.lang.ClassFormatError: 
   helloworld.Helloworld (unrecognized class file version)

   at java.lang.VMClassLoader.defineClass(libgcj.so.7rh)
   at java.lang.ClassLoader.defineClass(libgcj.so.7rh)
   at java.security.SecureClassLoader.defineClass(libgcj.so.7rh)
   at java.net.URLClassLoader.findClass(libgcj.so.7rh)
   at gnu.gcj.runtime.SystemClassLoader.findClass(libgcj.so.7rh)
   at java.lang.ClassLoader.loadClass(libgcj.so.7rh)
   at java.lang.ClassLoader.loadClass(libgcj.so.7rh)
   at gnu.java.lang.MainThread.run(libgcj.so.7rh).

Я проверил свою версию, и она:

[root@localhost /]# java --version
java version "1.4.2"
gij (GNU libgcj) version 4.1.2 20080704 (Red Hat 4.1.2-51)

Чтовызывает эту ошибку и как ее исправить?

Ответы [ 5 ]

4 голосов
/ 26 января 2012

Попробуйте выполнить следующее -

Первый шаг:

sudo update-java-alternatives -l

Это обеспечит правильную установку JDK6.Он должен отображать что-то вроде этого -

java-6-sun 63 /usr/lib/jvm/java-6-sun

Второй шаг:

sudo update-java-alternatives -s java-6-sun

Таким образом, javac и java v6 будут использоваться по умолчанию.

Обновление:

Введите на своем терминале следующее -

javac -version

Если вы получите javac 1.6.0_10 or later в качестве выхода, вам придется выполнить следующие шаги.Если вы не получите вышеуказанный вывод, вам придется удалить и переустановить Java.

Действия, если указана версия 1.6.0_10 или более поздняя

  1. Создать символическую ссылку-

    ln -s / usr / local / java / usr/local/jdk1.6.0_10

  2. Как только это будет сделано, добавьте следующее в .bashrc файл

    export JAVA_HOME = / usr / local / jdk1.6.0_10 export PATH = $ JAVA_HOME / bin: $ PATH export CLASSPATH = $ CLASSPATH: $ JAVA_HOME / lib

0 голосов
/ 21 марта 2015

Вы получаете эту ошибку, если ваши версии javac и java не совпадают.

Exception in thread "main" java.lang.ClassFormatError: Runner
(unrecognized class file version)

Диагностируйте проблему следующим образом:

$ which java
/usr/bin/java

$ which javac
/home2/ericlesc/bin/jdk1.8.0_40/bin/javac

Обратите внимание, что javac и java не из одних и тех же каталогов? Эти двое должны быть из одного места, одной и той же версии.

Чтобы исправить это, я добавил их в свой .bash_profile

export JAVA_HOME=/home2/ericlesc/bin/jdk1.8.0_40
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib

Тогда ошибка исчезнет.

Вам нужно будет указать, где вы установили Java.

0 голосов
/ 26 января 2012

Ошибка: «неопознанная версия файла класса». Это означает, что вы пытаетесь запустить jar, созданный несовместимой версией Java.

Как я вижу, вы на самом деле запускаете gcc java. Попробуйте запустить эту банку по оригинальному солнцу / оракулу

0 голосов
/ 26 января 2012

Запустите следующее на своем компьютере и на фактическом компьютере, который вы пытаетесь развернуть:

Java-версия

Если это не так, то вы должны получить вопрос.

Примечание. Если при выполнении команды, указанной выше, вы не можете найти ошибку команды, переменная пути может быть установлена ​​неправильно. В этом случае перейдите в каталог, где установлен jdk / sdk, в папку bin, а затем выполните команду.

0 голосов
/ 26 января 2012

Вы, должно быть, скомпилировали более новую версию JDK / JRE, чем та, с которой вы запускаете флягу. Проверьте версию JDK, которую вы используете для компиляции проекта в Netbeans, а затем проверьте версию JDK / JRE в консоли, используя

java -version
...