java.lang.UnsupportedClassVersionError: Неверный номер версии в файле .class - PullRequest
4 голосов
/ 27 июня 2011

У меня эта ошибка в эклипсах java.lang.UnsupportedClassVersionError: Bad version number in .class file.

Когда я запускаю javac -version, он печатает

javac 1.5.0_28

В eclipes, если я щелкну правой кнопкой мыши, в свойствах-> java-компиляторе будет написано, что я использую 1.5, и если я затем перейду к java build path, у меня там будет JRE System Library [JVM 1.5.0 (MacOS X Default)].

Почему я получаю эту ошибку и как ее исправить?

редактирует

java -version отпечатки

java version "1.5.0_28"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_28-b04-382-9M3326)
Java HotSpot(TM) Client VM (build 1.5.0_28-157, mixed mode, sharing)

Другими библиотеками в моем приложении является библиотека libgdx.

Полная ошибка

Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:676)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:317)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:280)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:375)

Ответы [ 5 ]

12 голосов
/ 27 июня 2011

Эта ошибка появляется при попытке запустить класс, скомпилированный для версии Java, более новой, чем у вас;например, если вы пытаетесь использовать класс, который был скомпилирован для Java 6 или новее в Java 5 JVM.

Это не обязательно должен быть ваш собственный класс;возможно, вы используете какую-то библиотеку, созданную для Java 6 или новее.

Используете ли вы определенные библиотеки (файлы JAR)?Проверьте, совместимы ли они с Java 5 или нет.Или обновите версию Java до Java 6.

2 голосов
/ 27 июня 2011

Я предполагаю, что вы используете сторонние библиотеки, созданные на Java 1.6.

Кстати, есть ли причина, по которой вы используете Java 1.5?Java 1.6 выпущена давно, и Java 1.5 больше не будет поддерживаться в ближайшее время (если не будет).

0 голосов
/ 25 ноября 2016

Если обновление JRE не является опцией, вы можете скомпилировать код с более низкой версией Java.

Из затмения:

Свойства проекта> Java-компилятор> Уровень соответствия компилятора> [Установить любую версию JRE]

См. Ниже экран настройки совместимости JRE 1.5

0 голосов
/ 22 января 2013

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

Например, если ваш $ PATH (этот пример для Unix) установлен в / usr / bin: (другие каталоги), вы получите / usr / bin / java при запуске java:


    $ java -version
    java version "1.5.0_18"
    Java(TM) Platform, Standard Edition for Business (build 1.5.0_18-b02)
    Java HotSpot(TM) Server VM (build 1.5.0_18-b02, mixed mode)
    $ which java
    /usr/bin/java

... но вашей программе нужно что-то подобное для работы:


    $ /usr/local/java/jdk1.6/bin/java -version
    java version "1.6.0_14"
    Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
    Java HotSpot(TM) Server VM (build 14.0-b16, mixed mode)

поэтому исправлением будет добавление каталога, в котором находится ваша правильная версия java, к началу вашего пути перед вызовом java, или вызов хорошей версии java по ее абсолютному пути.

0 голосов
/ 27 июня 2011

У вас есть класс, скомпилированный для более новой Java, чем та, которую вы используете.

В трассировке стека должно отображаться имя проблемного класса.Возможно, это библиотека, которую вы используете?

...