Я пытаюсь использовать 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 могут быть старыми или слишком новыми.
- Как мне это исправить?
- Должен ли я установить JDK и установить переменную пути в JDK вместо JRE?
- В чем разница между
PATH
переменной в JRE или JDK?
Ответы:
Показанный номер версии описывает версию JRE, с которой совместим файл класса.
Сообщенные основные цифры:
(Источник: Википедия )
Чтобы исправить реальную проблему, вы должны попытаться либо запустить код Java с более новой версией Java JRE, либо указать целевой параметр для компилятора Java, чтобы дать указание компилятору создавать код, совместимый с более ранними версиями Java.
Например, для генерации файлов классов, совместимых с Java 1.4, используйте следующую командную строку:
В более новых версиях Java-компилятора вы, вероятно, получите предупреждение о том, что путь к классу начальной загрузки не задан. Больше информации об этой ошибке доступно в сообщении в блоге. Новое предупреждение javac для установки более старого источника без bootclasspath .
источник
java.lang.UnsupportedClassVersionError
происходит из-за более высокого JDK во время компиляции и более низкого JDK во время выполнения.источник
/etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java
) на версию, использованную для компиляции с javac, решило ееsudo update-alternatives --config java
для этого.В Eclipse я просто зашел в команду меню Window -> Preferences -> Java -> Compiler и затем установил «Уровень соответствия компилятора» на 1.6.
источник
Не волнуйся, я понял это.
Это на самом деле просто - вам нужно установить ОБА JRE / JDK с той же версией.
JRE 6 -> JDK 6
JRE 7 -> JDK 7
И так далее.
источник
Эта ошибка означает, что вы пытаетесь загрузить файл «класса» Java, который был скомпилирован с более новой версией Java, чем вы установили.
Например, ваш
.class
файл мог быть скомпилирован для JDK 7, и вы пытаетесь запустить его с JDK 6.Таким образом, решение заключается в том, чтобы:
Перекомпилируйте класс, если у вас есть источник, используя ваш локальный компилятор Java (если он у вас есть).
javac FileName.java
Для разработчиков это может произойти, если другой разработчик зарегистрирует файл .class, и у него будет более новая версия Java, чем у вас!
источник
Вы пытаетесь запустить свою программу с версией Java, которая не поддерживает версию, в которой был скомпилирован код. Таким образом, в основном вы должны скомпилировать свой код с более высокой версией и попытаться запустить его с использованием более низкой версии.
Как вы получаете
и версия 51.0 соответствует J2SE 7, вы, скорее всего, скомпилировали свой код в Java 7 и пытаетесь запустить его, используя более низкую версию. Проверьте, что
java -version
отображается. Это должна быть версия Java 7. Если нет, внесите соответствующие изменения в PATH / JAVA_HOME. Или вы можете скомпилировать с той же версией, которую вы пытаетесь запустить код. Если конфигурации сбивают с толку, вы всегда можете указать абсолютный путь/home/user/jdk1.7.0_11/bin/javac
и/home/user/jdk1.7.0_11/bin/java
.источник
У меня была похожая ситуация на Mac, и у меня работал следующий процесс:
В терминале введите
Затем добавьте эту строку в файл и сохраните
где версия на вашем компьютере, например
1.7.0_25
.Выйдите из редактора, затем введите следующую команду, чтобы он вступил в силу
Затем введите java -version, чтобы проверить результат
Что такое
.profile
файл?Источник: http://computers.tutsplus.com/tutorials/speed-up-your-terminal-workflow-with-command-aliases-and-profile--mac-30515
источник
В меню Eclipse Window -> Preferences -> Java -> Compiler отметьте также «Настройка параметров проекта».
Если у вас все еще есть ошибка с той же версией Java: попробуйте удалить папку сборки вашего проекта вручную. Затем перезапустите Eclipse.
источник
Вы можете иметь некоторую библиотеку JAR, скомпилированную в Java 7, и у вас есть только Java 6 в качестве Java Runtime. Это может произойти с некоторыми новыми библиотеками.
источник
Наиболее распространенной проблемой является неправильная конфигурация вашей
JAVA_HOME
переменной, которая должна указывать на правильную библиотеку Java Development Kit, если вы установили несколько.Чтобы узнать, где находится папка Java SDK, выполните следующие команды:
Debian / Ubuntu
Чтобы проверить, какой java (openjdk) вы установили, проверьте через:
или:
Чтобы изменить это, используйте:
Префикс с,
sudo
если требуется.выбрать альтернативную версию Java.
Или проверьте, какие доступны для установки:
Префикс с,
sudo
если требуется.Затем вы можете установить, например:
Префикс с,
sudo
если требуется.Fedora, Oracle Linux, Red Hat
Установите / обновите соответствующий пакет через:
BSD
В коллекции портов FreeBSD есть пакет OpenJDK 7, называемый openjdk7, который, вероятно, необходимо перенастроить.
Смотрите: OpenJDK вики-страница .
Windows
Просто установите соответствующую библиотеку Java SE Development Kit с сайта Oracle или установите
Дженкинс
Если у вас возникла эта проблема с Дженкинсом, смотрите:
Однако выбор правильной версии Java (более новой) с
update-alternatives
должен работать.источник
Я столкнулся с той же проблемой, когда работал над сценарием Ant для создания своего приложения.
Я использую Eclipse для разработки приложений и изменил версию компилятора в свойствах сборки проекта. Но это не сработало для меня. Затем я узнал, что могу предоставить версию компилятора в скрипте Ant.
Я изменил скрипт Ant в разделе, где он компилирует файлы Java.
Это сработало для меня, чтобы решить нерешенную главную незначительную проблему.
источник
Когда я установил JDK 1.7, проблема была решена.
источник
Я получил ту же проблему с проектом, написанным в 1.7, и попытался выполнить в 1.6.
Мое решение в Eclipse:
Щелкните правой кнопкой мыши на свойства вашего проекта -> Путь сборки Java -> Библиотеки
Выберите системную библиотеку JRE, нажмите « Правка» справа и выберите целевой JRE.
Теперь перейдите к компилятору Java слева и измените уровень соответствия компилятора на свою цель.
Это сработало для меня.
источник
Как ответили в другом месте несколько человек, программа Java работает на более старой версии Java, чем та, для которой она была скомпилирована. Это должно быть "кросс-компилировано" для обратной совместимости. Другими словами, существует несоответствие между исходной и целевой версиями Java.
Изменение параметров в меню Eclipse не отвечает оригинальному постеру, который сказал, что не использует Eclipse. В OpenJDK javac версии 1.7 вы можете кросс-компилировать для 1.6, если вы используете параметры
-source
и-target
, плюс, предоставить файл 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). Вот так:Похоже, вы можете просто скачать rt.jar из Интернета и указать на него. Это не слишком элегантно, хотя:
источник
Основываясь на этом...
В Eclipse щелкните правой кнопкой мыши проект в проводнике пакетов:
Путь сборки -> Настройка пути сборки
Под:
Путь сборки Java -> Библиотеки -> Добавить библиотеку -> Системная библиотека JRE -> Установленные JRE -> Поиск .
Добавьте требуемую JRE, выбрав библиотеку в списке, доступном после завершения поиска.
источник
Если вы используете Maven, установите уровень компиляции Java. Откройте командную строку и напишите
java -version
для своего уровня компиляции:Если вы используете IntelliJ IDEA, выберите проект → Файл → Настройки → Развертывание выполнения сборки → Компилятор → Компилятор Java . Затем измените байт-код на 1.7, как на этом изображении:
источник
Если вы столкнулись с этой проблемой при использовании Maven , вы можете скомпилировать код с помощью подключаемого модуля Maven Compiler .
UPDATE: установить
source
иtarget
в1.8
, если вы используете JDK 8.источник
У меня было то же сообщение об ошибке при запуске Ant из Eclipse, но другие решения, упомянутые здесь, не решили мою проблему. Самое смешное, что запуск Ant из командной строки Windows работал нормально, поэтому это должно было быть проблемой конфигурации в Eclipse.
Оказалось, что в Eclipse вы можете указать среду, в которой должен работать Ant, и это было задано как JRE вместо JDK.
источник
Эта ошибка означает, что JRE, которая используется для выполнения кода вашего класса, не распознает используемую версию Java. Обычно потому, что версия Java, сгенерировавшая ваш файл класса (то есть скомпилированная), новее.
Чтобы исправить это, вы можете
a) Скомпилируйте исходные коды Java с той же или более старой версией компилятора Java, который будет использоваться для его запуска. т.е. установить соответствующий JDK.
б) Скомпилируйте исходные коды Java с более новой версией компилятора Java, но в режиме совместимости. т.е. использовать
-target
параметр.c) Запустите ваши скомпилированные классы в JRE той же или более новой версии, что и JDK, использованный для компиляции классов.
Вы можете проверить версии, которые вы используете в настоящее время
javac -version
для компилятора иjava -version
для времени выполнения.Разумеется, для компиляции установите и настройте нужный JDK.
Для времени выполнения вы можете использовать тот, который поставляется с JDK или автономным JRE, но, тем не менее, убедитесь, что вы установили правильные версии и настроили свой PATH так, чтобы не было никаких неожиданностей.
Переменная среды PATH сообщает командной оболочке, где искать введенную вами команду. Когда вы печатаете
java
, интерпретатор командной оболочки просматривает все местоположения, указанные вPATH
переменной, слева направо, чтобы найти подходящийjava
исполняемый файл для выполнения. Если у вас установлено несколько версий Java - т.е.java
исполняемый файл в нескольких местах, указанных в переменной PATH, то первая, с которой сталкиваются при переходе слева направо, будет той, которая выполняется.Команда компилятора есть
javac
и только поставляется с JDK. Команда времени выполнения естьjava
и поставляется с JDK и находится в JRE.Вполне вероятно, что у вас установлена одна версия (51.0 = Java 7)
javac
, и у вас также установлена та же версияjava
, но другая предыдущая версияjava
появляется ранее в PATH и поэтому вызывается вместо той, которую вы ожидаете ,источник
Вы использовали более высокую версию JDK для компиляции и пытались запустить ее из более низкой версии JDK / JRE .
Чтобы проверить это, посмотрите информацию о версии:
Они будут другими, и у javac будет более высокий номер версии.
Чтобы обойти это, запустите с использованием Java из версии JDK или, если у вас есть более новая версия JRE / JDK, которая также будет работать.
which javac
скажу вам местоположение, например/usr/bin/javac
,. Просто бегите напрямую используя/usr/bin/java <program>
.ИЛИ вы можете установить переменную среды как постоянное решение.
источник
Возникла эта проблема, когда я вернулся к Java 6 и попытался запустить классы, ранее скомпилированные с Java 7. Что мне сработало, так это Preferences> java> compiler -> установите уровень соответствия 1.6 и крайне важно «настроить параметры проекта».
источник
Сегодня это сообщение об ошибке появилось в нашем Tomcat 7 на Ubuntu 12.04.2 LTS (Precise Pangolin):
Приложение Struts скомпилировано с Java 7.
Оказалось, кто-то использует «службу tomcat [stop / start]» для перезапуска Tomcat 7,
Что приводит к ошибке «Unsupported major.minor version 51.0».
Когда мы использовали «/etc/init.d/tomcat7 [stop / start]» для перезапуска Tomcat 7, проблема была решена.
источник
Я решил это. Я побежал:
Ошибка вводит в заблуждение
Unsupported major.minor version 51.0
. Это создает впечатление, что версия 51 (Java 7) не поддерживается. И мы должны использовать Java 6.Ошибка должна была быть:
источник
Ваш Java-файл скомпилирован с другой версией (более высокая версия компилятора), чем версия (более низкая версия времени выполнения), с которой вы пытаетесь его запустить.
Понятно, что классы, скомпилированные с более низкими версиями, должны работать в более поздних версиях. Но обратное (скомпилированное с более высокой версией компилятора и пытающееся запустить его с более низкой версией времени исполнения) иногда совершенно невозможно.
Следовательно, вы видите эту ошибку при попытке выполнить вашу программу. Неподдерживаемая версия major.minor xx
(Источник: oracle.com .)
источник
О, Mac OS XI смогла решить эту проблему, установив переменную JAVA_HOME:
источник
Сначала давайте разберемся с основами ...
JRE - это компонент в NetBeans / Eclipse / standalone, который предоставит вам библиотеки, JVM, плагины Java и веб-запуск Java. Обратите внимание, что он не предоставляет компиляторы или отладчики.
JDK - это расширенный набор JRE вместе с компиляторами и отладчиками.
Поэтому, когда у вас есть библиотека по умолчанию в виде JRE вместо JDK, вам будет приятно импортировать материал, но он не будет компилироваться.
Вместо этого установите ваш путь к JDK (я использую NetBeans, и я установил их с помощью netbeans.conf в netbeans / etc / netbeans.conf и изменил путь).
источник
У меня была проблема, из-за которой мне приходилось запускать компиляцию Maven для моего проекта из командной строки, чтобы запускать мои модульные тесты; если я внес изменение в тестовый класс и позволил Eclipse автоматически его перекомпилировать, то я получил ошибку «Unsupported major.minor version 51.0».
У меня установлены JDK6 и JDK7, но все мои настройки JRE указывали на 1.6, как в pom, так и на странице свойств проекта в Eclipse. Никакое количество проекта обновления Maven и / или обновления не решило это.
Наконец я попытался закрыть проект и снова открыть его, и это, казалось, исправило это! НТН
источник
Вы скомпилировали свой класс Java с JDK 7 и пытаетесь запустить тот же класс на JDK 6.
источник
источник
Ответ для проблемы:
Исключение в потоке "main" java.lang.UnsupportedClassVersionError: edu / stevens / cs549 / dhts / main / LocalContext: неподдерживаемая major.minor версия 52.0
У меня была такая же проблема. Для тех, кто испытывал эту проблему в экземплярах AWS ec2 и каким-то образом перенаправился сюда на этот вопрос. Я отвечаю за них и хотел бы поделиться тем, как я это сделал. У меня были проблемы, потому что экземпляры Amazon EC2 работали с Java версии 1.7, и, возможно, мой проект был несовместим с ним, потому что я использовал Maven, и он был предварительно настроен для Java 1.8. Поэтому я установил новую версию Java:
sudo yum -y install java-1.8.0
И тогда важный шаг - удалить старую версию:
Не забудьте удалить его после установки новой версии, иначе он будет постоянно использовать ту же самую старую версию, и я надеюсь, что это решит вашу проблему, что и было в моем случае.
источник