Подтвердить что ты не робот

Java.lang.UnsupportedClassVersionError

Когда я запускал java-программу, я получил эту ошибку. Не могли бы вы предложить, почему мы получаем эту ошибку:

Exception in thread "main" java.lang.UnsupportedClassVersionError: 
    GenerateInvoice (Unsupported major.minor version 49.0)
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
4b9b3361

Ответ 1

Этот класс был скомпилирован с JDK более поздним, чем тот, который использовался для выполнения.

Проще всего установить более новую JRE на компьютере, где вы выполняете программу. Если вы считаете, что установили последнюю версию, проверьте переменные среды JAVA_HOME и PATH.

Версия 49 - это java 1.5. Это означает, что класс был скомпилирован (или для) JDK, который еще является старым. Вероятно, вы пытались выполнить класс с JDK 1.4. Вы действительно должны использовать еще один недавний (1,6 или 1,7, см. историю Java-версии).

Ответ 2

Другой вариант - удалить все классы и перестроить. Наличие файла сборки является идеальным решением для управления всем процессом, таким как сбор, упаковка и развертывание. Вы также можете указать исходные/целевые версии

Ответ 3

Скорее всего, код был скомпилирован с более поздним JDK (без использования параметров кросс-компиляции) и выполняется на более ранней JRE. Хотя обновление JRE является одним из решений, было бы лучше использовать опции кросс-компиляции, чтобы гарантировать, что код будет работать на любом JRE, предназначенном как минимальная версия для приложения.

Ответ 4

Это была новая машина Linux Mint xfce

Я боролся с этим около недели. Я пытаюсь изучить Java на Netbeans IDE, и поэтому, естественно, я получаю комбо файл прямо из Oracle. Что представляет собой пакет JDK и IDE Netbeans вместе в файле tar, расположенном здесь.

находится http://www.oracle.com/technetwork/java/javase/downloads/index.html имя файла JDK 8u25 с NetBeans 8.0.1

после их установки (или так я думал), я бы сделал/скомпилировал простую программу, такую ​​как "hello world", и это выплюнет файл jar, который вы сможете запустить в терминале. Имейте в виду, что программа запускалась в среде Netbeans IDE.

Я бы закончил с этой ошибкой: java.lang.UnsupportedClassVersionError:

Несмотря на то, что я запускал файл с веб-сайта oracle, у меня все еще была старая версия среды выполнения Java, которая не была совместима с файлом jar, который был скомпилирован с новой версией java.

После того, как вы столкнулись с вещами, которые были в основном над моей головой, от установки Paths для редактирования .bashrc без исправления.

Я встретил решение, которое было достаточно легко для меня. Я столкнулся с тем, что автоматически устанавливает java и настраивает его на вашей системе, и он работает с последним 1.8. *

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


sudo add-apt-repository ppa: webupd8team/java

Обновление sudo apt-get

sudo apt-get install oracle-java8-installer


domenic @domenic-AO532h ~ $java -версия java-версия "1.8.0_25" Java (TM) SE Runtime Environment (сборка 1.8.0_25-b17) Java HotSpot (TM) Server VM (сборка 25.25-b02, смешанный режим)

Я думаю, что он также настраивает браузер java.

Надеюсь, это поможет другим.