UnsupportedClassVersionError - PullRequest
0 голосов
/ 29 июля 2009

Я пытаюсь запустить Java-код, используя PuTTY. У меня есть все jar-файлы, которые мне нужны, в папке, и когда в папке с папкой «classname.class» я пытаюсь запустить файл, но получаю следующую ошибку.

Exception in thread "main" java.lang.UnsupportedClassVersionError: dueDate (Unsupported major.minor version 49.0)
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:489)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:104)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:245)
        at java.net.URLClassLoader.access$1(URLClassLoader.java:211)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:192)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:186)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:294)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:290)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:250)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:310)

Я не знаю, что означает эта ошибка и как мне ее исправить. Я использовал Eclipse для его программирования и jdk-6u14.

PuTTY использует версию Java 1.2.2

Как вы можете использовать более новую версию Java?

Ответы [ 6 ]

3 голосов
/ 29 июля 2009

Ну, это не совсем PuTTY, который использует Java. Это сервер, к которому вы подключаетесь. PuTTY - это то, что вы используете для подключения к этому серверу.

У вас есть два варианта:

  • Измените целевую версию Java (Windows / Preferences / Java / Compiler / Compiler Compliance Level) на 1.3 ... в идеале вы должны также скомпилировать JDK 1.2.2, чтобы избежать использования любых классов, которые выиграли ' не может присутствовать на сервере.
  • Получите более свежую версию Java на сервере.

Последнее, вероятно, будет сложнее, но намного лучше. Вы действительно не хотите ограничивать себя Java 1.2.2.

1 голос
/ 29 июля 2009

Ошибка предполагает, что вы пытаетесь запустить классы на JVM, которая их не поддерживает. Версия класса 49.0 была введена в Java 5. JRE до этой версии не будет их поддерживать.

1 голос
/ 29 июля 2009

Вы пытаетесь запустить новый код Java на действительно старом JDK - 1.2.2

Eclipse может предоставить некоторые опции обратной компиляции (проверьте ваш проект -> настройки -> java-компилятор), хотя я думаю, что он возвращается только к 1.3.

Поэтому вы можете попробовать использовать более новый JDK для фактического запуска кода.

0 голосов
/ 28 октября 2018

У меня была такая же проблема ранее, когда я пытался использовать команду

java -jar <jarfilename> --http <portname> --id <id name>

для запуска и демонстрации отдельных проектов DHT. Проблема с настройками экземпляров EC2, и она находится в версии JAVA. Так что все, что вам нужно сделать, это обновить версию. Я не могу поверить, что может быть такая разница в двух близких обновлениях, но команда не работает в JAVA1.7, и поэтому я обновил ее до JAVA 1.8. Запустите эти команды для удаления и установки новой версии

.
sudo yum install java-1.8.0

, а затем

sudo yum remove java-1.7.0-openjdk

Не забудьте сначала установить версию 1.8, а затем удалить 1.7. И тогда я надеюсь, что ваша проблема будет решена

0 голосов
/ 29 июля 2009

В основном это означает, что вы пытаетесь запустить код, использующий функции, которые не поддерживаются в этой версии JVM. Ваш сервер имеет более старую версию JVM, чем та, которую вы используете в своем затмении. Попробуйте обновить серверную JVM до самой последней версии.

0 голосов
/ 29 июля 2009

UnsupportedClassVersion означает, что скомпилированный класс был скомпилирован с более поздней версией JVM, чем вы пытаетесь запустить его. Последние несколько основных версий: Java 1.6 == 50.0, java1.5 == 49.0, java1.4 == 48.0.

Кстати, вы можете установить eclipse для компиляции более ранней версии класса, хотя я не уверен, что вы можете вернуться к 1.22-Project: Свойства: Compiler: CompilerComplianceLevel.

...