Я пытаюсь использовать Notepad++ в качестве универсального инструмента для редактирования, запуска, компиляции и т.д.
У меня установлен JRE, и я установил переменную пути в каталог .../bin
.
Когда я запускаю свой "Hello world" в Notepad++, я получаю следующее сообщение:
java.lang.UnsupportedClassVersionError: test_hello_world :
Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
.........................................
Я думаю, что проблема связана с версиями; некоторые версии Java могут быть старыми или слишком новыми.
PATH
в JRE или JDK?Указанный номер версии описывает версию JRE, с которой совместим файл класса.
Сообщаемые основные номера таковы:
Java SE 13 = 57,
Java SE 12 = 56,
Java SE 11 = 55,
Java SE 10 = 54,
Java SE 9 = 53,
Java SE 8 = 52,
Java SE 7 = 51,
Java SE 6.0 = 50,
Java SE 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45
(Источник: Wikipedia)
Для устранения фактической проблемы следует попытаться либо запустить Java-код с более новой версией Java JRE, либо указать компилятору Java параметр target, чтобы проинструктировать компилятор создать код, совместимый с более ранними версиями Java.
Например, для создания файлов классов, совместимых с Java 1.4, используйте следующую командную строку:
javac -target 1.4 HelloWorld.java
В более новых версиях компилятора Java вы, скорее всего, получите предупреждение о том, что путь к классу bootstrap не установлен. Более подробная информация об этой ошибке доступна в записи блога Новое предупреждение javac для установки старого источника без bootclasspath.
Ошибка java.lang.UnsupportedClassVersionError
происходит из-за более высокого JDK во время компиляции и более низкого JDK во время выполнения.
В Eclipse я просто перешел к команде меню Window -> Preferences -> Java -> Compiler и затем установил "Compiler compliance level" на 1.6.
Эта ошибка означает, что вы'вновь пытается загрузить Ява "Класс" и файл, который был скомпилирован с более новой версии Java, чем вы установили.
Например, ваш.файл класса мог бы быть составлен для JDK 7, и вы'вновь пытается запустить его с JDK 6.
Поэтому решением является либо:
и javac FileName.java
Для разработчиков, это может произойти, если другой разработчик проверяет на .файл класса, и они've получили более новую версию Java, чем у вас!
Вы пытаетесь запустить программу с версии Java, которая не поддерживает версия, в которой код был скомпилирован. Так в основном вы должны иметь скомпилированный код с более высокой версии и пытается запустить его, используя более низкую версию.
Как вы получаете
Unsupported major.minor version 51.0
и версия 51.0 соответствует в J2SE 7 скорее всего, вы не компилировали код в Java 7, и пытаетесь запустить ее, используя более низкую версию. Проверить, что Java-версия отображает. Он должен быть в версии Java 7. Если не внести соответствующие изменения в путь/переменной JAVA_HOME. Или можно скомпилировать с одной и той же версии вы пытаетесь запустить код. Если конфигурации путаете вы всегда можете дать абсолютный путь в/Home/пользователь/jdk1.7.0_11/ОГРН/javac и " и " /главная/пользователя/jdk1.7.0_11/ОГРН/Ява
.
У меня была похожая ситуация на Mac, и следующий процесс работал для меня:
В терминале введите
vi ~/.profile
Затем добавьте эту строку в файл, и сохранить
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk<version>.jdk/Contents/Home
где версия на вашем компьютере, такие как 1.7.0_25
.
Выйдите из редактора, затем введите следующую команду и заставить его быть эффективной
source ~/.profile
Затем введите Java-версия, чтобы проверить результат
java -version
Что такое .файл профиля
?
.профиль файл является скрытым. Это необязательный файл, который сообщает системе, что команды, которые будут выполняться, когда пользователь профиль файл которого это входит в систему. Например, если мое имя пользователя Бруно и есть .профиль файла в папке /users/Бруно/, все ее содержимое будет выполняться во время входа в процедуру.
В Eclipse'меню Окно -> предпочтения -> Ява -> компилятор проверьте также, что "настроить проект, определенные параметры и".
Если вы все еще ошибки с таким же версии Java: попробуйте удалить папку сборки проекта вручную. Затем перезапустите Eclipse.
Наиболее распространенной проблемой является неправильной настройки вашего переменной JAVA_HOME
переменная, которая должна указывать на право библиотека комплект разработки Java, если вы'ве нескольких установленных.
Найти, где находятся папки SDK на Java, выполните следующие команды:
jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'
Чтобы проверить, какой Java (OpenJDK в) ВЫ'вэ установлен, проверьте через:
dpkg -l "openjdk*" | grep ^i
или:
update-java-alternatives -l
Чтобы изменить его, используйте:
update-alternatives --config java
<суп>префикс судо
в случае необходимости.</SUP и ГТ;
чтобы выбрать другую версию Java.
Или проверить, какие доступны для установки:
apt-cache search ^openjdk
<суп>префикс судо
в случае необходимости.</SUP и ГТ;
Затем вы можете установить, например:
apt-get install openjdk-7-jre
<суп>префикс судо
в случае необходимости.</SUP и ГТ;
Установить/обновить соответствующий пакет через:
yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel
и GT; `в Java-1.7.0-OpenJDK в пакет содержит среду выполнения Java. Если вы хотите разрабатывать программы Java, то установить на Java-1.7.0-OpenJDK в-девел пакет.
Есть пакет пакеты OpenJDK 7 в коллекции портов FreeBSD, которая называется openjdk7, которая, вероятно, должна быть изменена.
См.: страницы Вики OpenJDK.
Просто установите соответствующую библиотеку комплект разработчика Java SE из сайта Oracle или установить
Если вы'вновь возникли проблемы с Дженкинс, см.:
Однако, выбрав правильную версию Ява (новые) с обновлений
должны работать.
У меня такая же проблема с проектом, написанные в 1,7 и попытался выполнить в 1.6.
Мое решение в Eclipse:
Щелкните правой кнопкой мыши на ваш проект свойства -> путь построения Java -> библиотек
Выберите вашу библиотеку системы JRE и нажимаем Изменить на правом, и выбрать целевую версию JRE.
Теперь переходим к компилятор Java слева, и изменения *уровень соответствия компилятора** к вашей цели.
Что работал для меня.
Я столкнулась с той же проблемой, когда я работал с АНТ скрипт для создания моего приложения.
Я использую затмение для моей разработки приложений, и я изменил версию компилятора в свойствах сборки проекта. Но это't работа для меня. Потом я узнал, что я могу предоставить версию компилятора в Ant-скрипт.
Я модифицировал скрипт Ant в разделе, где его компиляции Java-файлов.
<target name="build-java" depends="prepare-build">
<echo message="Compiling java files"/>
<javac ....
target="1.5"...
</javac>
</target>
Это работало для меня, чтобы решить неподдерживаемый майор незначительные проблемы.
Как ответили в другом месте несколько человек, Java-программа работает на старой версии Java, чем он был составлен для. Он должен быть "crosscompiled" и для обратной совместимости. Иначе говоря, существует несоответствие между исходной и целевой версий Java.
Изменение параметров в Eclipse меню Дон'т отвечать на оригинальный плакат, который сказал, что он/она не с помощью Eclipse. На OpenJDK в версии javac 1.7, вы можете crosscompile для 1.6, если вы используете параметры источник
и цели
, плюс предоставить rt.jar -файл с версией (т. е. старую) во время компиляции. Если вы на самом деле установить 1.6 JRE можно указать на ее установку (например, /usr/lib/jvm/java-6-openjdk-i386/jre/lib/rt.jar в Ubuntu /usr/jdk/jdk1.6.0_60/jre/lib/rt.jar в SunOS, видимо. К сожалению, я не'т знаю, где он находится на системе Windows). Вот так:
javac -source 1.6 -target 1.6 -bootclasspath /usr/lib/jvm/java-6-openjdk-i386/jre/lib/rt.jar HelloWorld.java
Похоже, вы можете просто скачать rt.jar из интернета, и указывают на него. Это хотя и не слишком элегантно:
javac -source 1.6 -target 1.6 -bootclasspath ./rt.jar HelloWorld.java
Если вы'снова сталкиваются с этой проблемой при использовании знаток, вы можете скомпилировать код с помощью плагина Compiler Мэйвен.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
.....
Обновление: набор источник
и цель
с 1.8
, если вы используете версию JDK 8.
На основании этого...
J2SE 8 = 52
J2SE 7 = 51
J2SE 6.0 = 50
J2SE 5.0 = 49
JDK 1.4 = 48
JDK 1.3 = 47
JDK 1.2 = 46
JDK 1.1 = 45
В Eclipse, щелкните правой кнопкой мыши на проекте в обозревателе пакетов:
Путь сборки -> настроить путь сборки
Под:
Путь построения Java -> библиотеки -> добавить библиотеку -> среды JRE библиотечная система -> установленный jres -> Поиск.
Добавить необходимое JRE и, выбрав в библиотеке в списке доступных после завершения поиска.
У меня было такое же сообщение об ошибке при запуске муравей из Eclipse, но других упомянутых здесь решений не'т решить мою проблему. Самое смешное было то, что запустив Ant из командной строки Windows работал нормально, так и должно быть проблема конфигурации в Eclipse.
Оказалось, что под затмение вы можете указать среду, что муравей должен работать с, и это было установлено в среду JRE, а не JDK для.
как я могу исправить это?
Эта ошибка означает, что JRE, который используется, чтобы выполнить свой код класса не признают версия Java используется. Как правило, потому, что версия Java, что сгенерированный файл класса (т. е. скомпилировал его) новее.
Чтобы исправить это, вы можете либо
а) скомпилировать исходный код Java с той же, и старше, версия компилятора Java, как будет использоваться, чтобы запустить его. т. е. установить соответствующий пакет.
б) компилировать исходный код Java в новой версии компилятора Java, но в режиме совместимости. т. е. использовать параметр цели
.
с) запустить свой скомпилированные классы в JRE, который является таким же или более новой версии JDK для компиляции классов.
Вы можете проверить версии в настоящее время вы используете с `и javac -версия для компилятора, и Java-версия для исполнения.
я должен установить JDK и настроить переменную пути к JDK вместо версии?
Для компиляции, конечно, установить и настроить конкретное JDK, который вы хотите.
Для выполнения, вы можете использовать тот, который поставляется с JDK или автономное JRE, но несмотря на это, убедитесь, что вы установили правильные версии и что вы настроили свой путь так, что нет никаких сюрпризов.
В чем разница между переменной PATH в JRE или JDK?
Переменная среды PATH сообщает командной оболочке, где искать команды, которые вы вводите. Когда вы типа Java
, интерпретатор командной оболочки будет выглядеть через все места, указанные в переменной PATH
, слева направо, чтобы найти во время выполнения соответствующих Ява
исполняемый файл для запуска. Если у вас установлено несколько версий Java - т. е. у вас есть исполняемый файл Ява
в нескольких местах, указанных в переменной PATH, тогда тот, кто сталкивался, когда едешь слева направо будет выполнен.
Команды компилятора и javac и приходит только с JDK. Команды выполнения
Ява` и поставляется с JDK и в JRE.
Вполне вероятно, что у вас одна версия (51.0 = с Java 7) с помощью javacустановлен, и вы также иметь ту же версию
Яваустановлен, но это еще на предыдущей версии
Ява` появляется в начале пути и так вызывается, а не тот, кого ты ждешь.
Вы использовали выше версии JDK для компиляции и попытке запустить с низких версия JDK/версии.
Чтобы проверить это, см. информацию о версии:
javac -version
java -version
Они будут отличаться и javac будет иметь более высокий номер версии.
Чтобы обойти это, запустить с помощью Java с JDK версии или если у вас есть новую JRE/JDK, который будет также работать.
что и javac
покажет вам расположение, например, /usr/Бен/и javac
. Просто запустить прямо через /usr/Бен/Ява <программы>
.
Или вы можете установить переменную окружения в качестве постоянного решения.