Как исправить ошибку java.lang.UnsupportedClassVersionError: Неподдерживаемая версия major.minor

1530

Я пытаюсь использовать 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?
  • 0
    Вы также установили JDK? jre - это среда Java RunTime, для создания java-приложений также необходим jdk
  • 0
    Да, я сделал, и теперь моя переменная пути указывает на то, где находится JDK. все же у меня все еще есть эта ошибка "неподдерживаемой минорной версии 51.0", как вы думаете, я должен установить более старую версию jdk? Я использую JDK 1.7.0
Показать ещё 7 комментариев
Теги:
jvm
unsupported-class-version

46 ответов

1928
Лучший ответ

Показанный номер версии описывает версию JRE, с которой совместим файл класса.

Основные цифры:

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

(Источник: Википедия)

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

Например, чтобы генерировать файлы классов, совместимые с Java 1.4, используйте следующую командную строку:

javac -target 1.4 HelloWorld.java

С более новыми версиями компилятора Java вы, скорее всего, получите предупреждение о том, что путь класса bootstrap не задан. Дополнительная информация об этой ошибке доступна в сообщении в блоге. Новое предупреждение javac для установки более старого источника без bootclasspath.

  • 157
    «Показанный номер версии описывает, какая версия использовалась Java для компиляции кода». Нет. Он показывает версию JRE, с которой совместим файл класса. Используя опции кросс-компиляции, вы можете использовать 1.7 JDK для компиляции кода с версией класса 1.1 (1.7).
  • 80
    Этот ответ не объясняет, как это исправить, поскольку вопрос задан?
Показать ещё 7 комментариев
325

java.lang.UnsupportedClassVersionError происходит из-за более высокого JDK во время компиляции и более низкого JDK во время выполнения.

  • 11
    +1: изменение этой символической ссылки ( /etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java ) на версию, используемую для компиляции с javac, решило ее
  • 1
    Как я могу внести изменения выше?
Показать ещё 7 комментариев
108

В Eclipse я просто подошел к команде меню Window → Preferences → Java → Compiler, а затем установил "Уровень соответствия компилятора" на 1.6.

  • 3
    В eclipse иногда аспекты проекта также должны быть изменены на соответствующую версию Java.
  • 6
    Благодарю. Стоит отметить, что настройка среды выполнения Eclipse по умолчанию (JRE, которая идет по пути сборки) является отдельной настройкой. Я установил JRE, но не уровень соответствия компилятора; это исправило это.
Показать ещё 2 комментария
55

Не волнуйся, я решил его решить.

На самом деле это просто: вам нужно установить BOTH JRE/JDK с той же версией.

JRE 6 → JDK 6

JRE 7 → JDK 7

И так далее.

  • 26
    Java 7 может обрабатывать 6 без проблем тоже.
40

Эта ошибка означает, что вы пытаетесь загрузить файл класса Java, который был скомпилирован с более новой версией Java, чем вы установили.

Например, ваш файл .class мог быть скомпилирован для JDK 7, и вы пытаетесь запустить его с помощью JDK 6.

Таким образом, решение будет либо:

  • Обновите среду выполнения Java или
  • Перекомпилируйте класс, если у вас есть источник, используя локальный компилятор Java (если он у вас есть).

    javac FileName.java

Для разработчиков это может произойти, если другой разработчик проверяет файл .class, и у них есть более новая версия java, чем у вас есть.

  • 4
    За исключением внутренних банок.
21

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

Как вы получаете

Unsupported major.minor version 51.0

и версия 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.

18

У меня была аналогичная ситуация на Mac, и для меня работал следующий процесс:

В терминале введите

vi ~/.profile

Затем добавьте эту строку в файл и сохраните

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk<version>.jdk/Contents/Home

где версия является той, что на вашем компьютере, например 1.7.0_25.

Выйдите из редактора, затем введите следующую команду, чтобы она стала эффективной.

source ~/.profile 

Затем введите java -version, чтобы проверить результат

java -version 

Что такое .profile файл?

Файл

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

Источник: http://computers.tutsplus.com/tutorials/speed-up-your-terminal-workflow-with-command-aliases-and-profile--mac-30515

16

В меню Eclipse Окно → Настройки → Java → Проверка компилятора также "Настроить параметры проекта".

Если у вас есть ошибка с той же версией Java: попробуйте вручную удалить папку сборки вашего проекта. Затем перезапустите Eclipse.

14

Наиболее распространенной проблемой является неправильная конфигурация вашей переменной JAVA_HOME, которая должна указывать на нужную библиотеку Java Development Kit, если у вас несколько установленных.

Чтобы найти папку SDK Java, выполните следующие команды:

jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'

Debian/Ubuntu

Чтобы проверить, какой java (openjdk) вы установили, проверьте через:

dpkg -l "openjdk*" | grep ^i

или

update-java-alternatives -l

Чтобы изменить его, используйте:

update-alternatives --config java

Префикс с sudo, если требуется.

чтобы выбрать альтернативную версию java.

Или проверьте, какие из них доступны для установки:

apt-cache search ^openjdk

Префикс с sudo, если требуется.

Затем вы можете установить, например:

apt-get install openjdk-7-jre

Префикс с sudo, если требуется.

Fedora, Oracle Linux, Red Hat

Установите/обновите соответствующий пакет с помощью:

yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel

В пакете java-1.7.0-openjdk содержится только Java Runtime Environment. Если вы хотите разработать Java-программы, установите пакет java-1.7.0-openjdk-devel.

BSD

В коллекции портов FreeBSD имеется пакет OpenJDK 7, называемый openjdk7, который, вероятно, необходимо переконфигурировать.

Смотрите: Страница вики OpenJDK.

Окна

Просто установите соответствующую библиотеку Java SE Development Kit из сайта Oracle или установите

Дженкинс

Если вы столкнулись с этой проблемой с Jenkins, см.:

Однако выбор правильной версии Java (новее) с помощью update-alternatives должен работать.

  • 0
    Этот ответ сработал для меня при попытке использовать spark2-shell на хосте после добавления сервиса spark в кластер с cloudera.
14

У вас может быть библиотека JAR, скомпилированная в Java 7, и у вас есть только Java 6 как Java Runtime. Это может случиться с некоторыми новыми библиотеками.

12

У меня такая же проблема с проектом, написанным в версии 1.7, и попытался выполнить в 1.6.

Мое решение в Eclipse:

  • Щелкните правой кнопкой мыши свой проект Свойства → Путь сборки Java → Библиотеки

  • Выберите свою Системную библиотеку JRE и нажмите Изменить справа и выберите целевую JRE.

  • Теперь перейдите в Компилятор Java слева и измените уровень соответствия компилятора на вашу цель.

Это сработало для меня.

12

Когда я установил JDK 1.7, проблема была решена.

12

Я столкнулся с той же проблемой, когда работал с скриптом Ant для создания моего приложения.

Я использую Eclipse для разработки моего приложения, и я изменил версию компилятора в свойствах сборки проекта. Но это не сработало для меня. Затем я узнал, что могу предоставить версию компилятора в скрипте Ant.

Я изменил сценарий Ant в разделе, где он компилирует файлы Java.

<target name="build-java" depends="prepare-build">
    <echo message="Compiling java files"/>
    <javac ....
           target="1.5"...
    </javac>
</target>

Это помогло мне решить неподдерживаемую основную второстепенную проблему.

11

Как было сказано в другом месте несколькими людьми, 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). Например:

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
10
  • Если вы используете Maven, установите уровень компиляции Java. Откройте командную строку и напишите java -version для вашего уровня компиляции:

    Изображение 1325

  • Если вы используете IntelliJ IDEA, выберите проект → Файл → Настройки → Развертывание выполнения сборки → Компилятор → Компилятор Java. Затем измените байтовый код как 1.7, как это изображение:

    Изображение 1326

  • 0
    Мне нужно было сделать maven чистую установку после смены пом.
10

Основываясь на этом...

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 > Установленные JRE Поиск.

Добавьте требуемую JRE, выбрав библиотеку в списке, доступном после завершения поиска.

8

Как это исправить?

Эта ошибка означает, что JRE, который используется для выполнения вашего кода класса, не распознает используемую версию Java. Обычно, поскольку версия Java, которая сгенерировала ваш файл класса (т.е. Скомпилировала его), является более новой.

Чтобы исправить это, вы можете

a) Скомпилируйте свои источники Java с той же самой или более старой версией компилятора Java, которая будет использоваться для ее запуска. т.е. установить соответствующий JDK.

b) Скомпилируйте свои источники Java с более новой версией компилятора Java, но в режиме совместимости. т.е. использовать параметр -target.

c) Запустите скомпилированные классы в JRE, которая является той же самой или новой версией, что и JDK для компиляции классов.

Вы можете проверить версии, которые вы используете в настоящее время, с помощью javac -version для компилятора и java -version для среды выполнения.

Должен ли я установить JDK и настроить свою переменную PATH на JDK вместо JRE?

Для компиляции, конечно же, установите и настройте конкретный JDK, который вы хотите.

Для среды исполнения вы можете использовать ту, которая поставляется с JDK или автономной JRE, но независимо от того, убедитесь, что вы установили правильные версии и что вы настроили свой PATH так, чтобы не было сюрпризов.

В чем разница между переменной PATH в JRE или JDK?

Переменная среды PATH сообщает командной оболочке, где нужно искать введенную команду. Когда вы вводите java, интерпретатор командной оболочки будет просматривать все местоположения, указанные в переменной PATH слева направо, чтобы найти подходящий исполняемый файл java для выполнения. Если у вас установлено несколько версий Java - т.е. У вас есть исполняемый файл java в нескольких местах, указанных в переменной PATH, то первый, который встречается при движении слева направо, будет выполняться.

Команда компилятора javac и поставляется только с JDK. Команда выполнения java и поставляется с JDK и находится в JRE.

Вероятно, у вас установлена ​​одна версия (51.0 = Java 7) javac, и у вас также установлена ​​такая же версия java, но другая предыдущая версия java появляется ранее в PATH и поэтому вызывается вместо ожидаемого.

8

Если вы столкнулись с этой проблемой при использовании Maven, вы можете скомпилировать свой код с помощью подключаемого модуля Maven 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>
       .....

UPDATE: установите source и target 1.8, если вы используете JDK 8.

  • 0
    Фрагмент о том, как использовать плагин для кросс-компиляции, был бы очень хорош вместо посещения / открытия ссылки
8

У меня было такое же сообщение об ошибке при запуске Ant из Eclipse, но другие решения, упомянутые здесь, не помогли решить мою проблему. Самое забавное, что запуск Ant из командной строки Windows выполнялся нормально, поэтому в Eclipse была проблема с конфигурацией.

Оказалось, что в Eclipse вы можете указать среду, с которой должен работать Ant, и это было установлено как JRE вместо JDK.

  • Перейдите к: Run → External Tools → External Tools Configurations...
  • Выберите Ant build.xml для вашего проекта (если у вас несколько проектов)
  • Активировать вкладку "JRE"
  • Здесь была выбрана "Отдельная JRE: jre6". Когда я изменил это на JDK из серии 1.6 или 1.7, ошибка исчезла.
7

Вы использовали более высокую версию JDK для компиляции и попыток запуска из более низкой версии JDK/JRE.

Чтобы проверить это, см. информацию о версии:

javac -version

java -version

Они будут разными, а javac будет иметь более высокий номер версии.

Чтобы обойти это, используйте java из версии JDK или если у вас есть более новая JRE/JDK, которая также будет работать.

which javac сообщит вам местоположение, например, /usr/bin/javac. Просто запустите прямо с помощью /usr/bin/java <program>.

ИЛИ вы можете установить переменную окружения в качестве постоянного решения.

6

Ваш файл Java скомпилирован с другой версией (более поздняя версия компилятора), чем версия (более низкая версия исполнения), с которой вы пытаетесь запустить ее.

Понятно, что классы, скомпилированные с более низкими версиями, будут запускаться в более поздних версиях. Но противоположное (скомпилированное с более высокой версией компилятора и пытающееся запустить его с более низкой версией исполнения), иногда невозможно.

Следовательно, вам будет показана эта ошибка при попытке выполнить вашу программу. Неподдерживаемая версия major.minor x.x

Q: Я создал приложение в Java 7, но когда мои пользователи пытаются запустите его, они получают неподдерживаемую ошибку major.minor версии 51.0. Какие это означает и что я могу с этим сделать?

A: Если вы скомпилируете приложение с помощью javac в Java 7, то в результате файлы классов будут иметь номер версии версии 51.0. Версии Java до 7 не распознает этот номер, поэтому ваши пользователи будут иметь для перехода на Java 7 до запуска приложения. Если вы не используя любые Java 7 API, вы можете попытаться скомпилировать ваше приложение, используя javac -target 1.6 для создания 1.6-совместимого класса. Если ваш приложение развертывается с помощью webstart, вы можете указать минимальное требуется версия. Для получения дополнительной информации см. Документы в Java Web Start и JNLP здесь. Эта проблема исчезнет, ​​когда мы запустим autoupdate для Java 7 для конечных пользователей, которые в настоящее время имеют Java 6 на своих рабочих столах. сроки для этого еще не определены, мы хотим дать разработчикам чтобы сначала решить любые проблемы между их кодом и JDK 7.

(Источник: oracle.com.)

6

Я решил это. Я побежал:

JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386

Ошибка вводит в заблуждение, Unsupported major.minor version 51.0. Это создает впечатление, что версия 51 (Java 7) не поддерживается. И мы должны использовать Java 6.

Ошибка должна быть:

Текущая версия Java, 50, не поддерживается. Вместо этого используйте Java версии 7 (51: 0 и выше).

6

Если бы я вернулся к Java 6 и попытался запустить классы, ранее скомпилированные с помощью Java 7. Для меня работала Preferences > java > compiler → установить уровень соответствия 1.6 и, в решающей степени, "настроить параметры проекта".

6

Сегодня это сообщение об ошибке появилось в нашем Tomcat 7 на Ubuntu 12.04.2 LTS (Precise Pangolin):

/var/log/tomcat7/localhost.2014-04-08.log:
8 апреля 2014 г. 9:00:55 org.apache.catalina.core.StandardContext filterStart
SEVERE: Исходные стартовые фильтры struts2
java.lang.UnsupportedClassVersionError: controller/ReqAccept: Unsupported major.minor version 51.0 (невозможно загрузить класс controller.ReqAccept)

Приложение Struts скомпилировано с Java 7.

Оказалось, кто-то использует "сервис tomcat [stop/start]" для перезапуска Tomcat 7,

$ ps -ef | grep java
tomcat7 31783 1 32 20:13? 00:00:03/usr/lib/jvm/default-java/bin/java...
$/usr/lib/jvm/default-java/bin/java -version
java-версия "1.6.0_27"

Который вызывает ошибку "Неподдерживаемый major.minor version 51.0".

Когда мы использовали "/etc/init.d/tomcat7 [stop/start]" для перезапуска Tomcat 7, проблема была решена.

$ ps -ef | grep java
tomcat7 31886 1 80 20:24? 00:00:10/usr/local/java/jdk1.7.0_15/bin/java
$/usr/local/java/jdk1.7.0_15/bin/java -version
java-версия "1.7.0_15"

5

О Mac OS X Я смог решить эту проблему, установив переменную JAVA_HOME:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home
4

Сначала позвольте получить некоторые основы правильно...

JRE является компонентом в NetBeans/Eclipse/standalone, который будет предоставлять вам библиотеки, JVM, плагины Java и веб-начало Java. Обратите внимание, что он не предоставляет компиляторов или отладчиков.

JDK - это надмножество JRE наряду с compliers и debuggers.

Итак, когда у вас есть библиотека по умолчанию как JRE вместо JDK, у вас будет приятное время для импорта, но она не будет компилироваться.

Вместо этого укажите свой путь к JDK (я использую NetBeans, и я установил их с помощью netbeans.conf в netbeans/etc/netbeans.conf и изменил путь).

3

В моем случае проблема была в конфигурации времени выполнения сервера:

Изображение 1327

Проверьте JRE - это необходимая версия:

Изображение 1328

Проект был в версии 1.7, а сервер JRE был установлен как 1.6, после того, как он перешел к правильной версии java, которую он запустил.

3
  • Установите JDK 7.0.55 и установите Java для Eclipse для JDK 7.0.55.
  • Создайте проект с помощью JDK 7.0.55, настроив на пути сборки JDK 7.0.55.
  • Установите компилятор в Eclipse для JDK 7.0.55 в меню Windows → Настройки → Java → Компилятор - выберите 1.7.
3

Вы скомпилировали свой Java-класс с JDK 7, и вы пытаетесь запустить тот же класс на JDK 6.

3

У меня возникла проблема, из-за которой мне приходилось запускать компиляцию Maven в моем проекте из командной строки для запуска моих модульных тестов; если я внес изменения в тестовый класс и позволю Eclipse автоматически перекомпилировать его, тогда я получил ошибку "Неподдерживаемый major.minor version 51.0".

У меня есть как JDK6, так и JDK7, но все мои настройки JRE указывали на 1.6, как на pom, так и на странице свойств проекта в Eclipse. Ни один проект Maven Update Project и/или обновление не разрешили это.

Наконец, я попытался закрыть проект и снова открыть его, и это, похоже, исправить! НТН

2

Ответ на проблему:

Исключение в потоке "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

И тогда важный шаг - удалить старую версию:

sudo yum remove java-1.7.0-openjdk

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

1

Поскольку java 9 -target заменяется на --release.

До 11 января доступные номера для --release: 6 7, 8, 9, 10, 11.
И вы можете догадаться, что будущие версии будут 12, 13 и так далее.

Чтобы скомпилировать для более старой целевой JVM:

javac --release 7 Tmp.java//это сгенерирует файл .class, который может работать на jvm> = 7,

Затем вы можете проверить целевую версию с помощью:

javap -v Tmp | grep version

в выводе major version идентифицирует целевую версию jvm.

  • 55 → Ява 11
  • 54 → Ява 10
  • 53 → Ява 9
  • 52 → Ява 8
  • 51 → Java 7
  • 50 → Ява 6

Будущая версия удалит более старые версии:

  • Начиная с Java 11, основные версии <= 49 (версия Java <= 5) не поддерживаются.
  • Начиная с Java 12 и 13, основные версии <= 50 (версия Java <= 6) не поддерживаются.

Вы можете узнать, какие целевые версии поддерживаются текущим javac, с помощью команды:
javac -help | grep releases

1

У меня возникла та же проблема, и я исправил ее в Linux.

Проверьте $JAVA_HOME

Требуется JDK 1.8 для компиляции/сборки APK

Установите Java JDK 1.8 и измените JAVA_HOME

Измените ~/.bashrc и добавьте свой путь JDK 1.8 как JAVA_HOME.

export JAVA_HOME=/usr/lib/jvm/java-8-oracle/jre/

И source ~/.bashrc

Закройте текущее окно терминала/вкладку и запустите $JAVA_HOME, чтобы проверить путь.

1

Еще один способ исправить это на Mac OS X с помощью Homebrew:

brew install Caskroom/cask/java
0

убедитесь, что вы проверили переменные окружения версии java, это может быть просто разница между версиями JAVA_HOME (путь JDK) и JRE_HOME (путь JRE), которые вызывают проблему

0

вы можете указать "цель" для компилятора в файле build.xml, если вы используете муравей, как показано ниже:

 <target name="compile" depends="init">
    <javac executable="${JAVA_HOME}\bin\javac" srcdir="${src.dir}" target="1.6" destdir="${classes.dir}" debug="true"
        deprecation="true" classpathref="compile.classpath" encoding="utf8">
        <include name="**/*.java" />
    </javac>
</target>
0

Я пробовал все. Повторная установка Tomcat - это то, что наконец-то сработало. Вот что я проверил перед повторной установкой.

Убедитесь, что ваши экологические переменные выглядят так.

$ echo $JAVA_HOME
C:\Program Files\Java\jdk1.7.0_51\
$ echo $JRE_HOME
C:\Program Files\Java\jdk1.7.0_51\jre\bin

Убедитесь, что Eclipse использует тот же jre, которым вы устанавливаете JAVA_HOME (если JAVA_HOME не установлен, он будет смотреть на JRE_HOME). Window > Prefrences > Java > Installed JREs (проверенный один по умолчанию)

Если вы внесли какие-либо изменения в любой из ваших файлов tomcat, особенно catalina.bat или startup.bat, то вы можете сказать tomcat посмотреть на другую версию java, чем на тот, который вы установили в JAVA_HOME C:\Program Files (x86)\Apache\apache-tomcat-7.0.26\bin

0

Для меня я получил эту ошибку в классе com/sun/javadoc/Doclet. После некоторого копания я обнаружил, что я случайно скопировал tools.jar из Java 8 в свою папку Java 7.

Поиск tools.jar для Java 7 и возврат его обратно в папку исправил мою проблему. Так что-то попробовать.

0
  • Нажмите "Свойства" в проекте.
  • Перейдите к пути сборки Java.
  • Нажмите "Добавить библиотеку".
  • Нажмите "Далее" в Системной библиотеке JRE. Выберите тот, который вам нужен, если он не выбран по умолчанию.
  • Нажмите "Готово".

Вы закончили!

0

Я использую OS X v10.11.5 (El Capitan), и я попытался настроить JAVA_HOME и принудительно "верную" версию Java через Maven. Ничего не помогло.

Проблема возникла, когда учетная запись OS X была отключена, пока приложение все еще работает. После входа в систему, OS X открыл старый сеанс терминала с серой историей. Я использовал один и тот же сеанс терминала для создания проекта, но не смог с ошибкой версии неподдерживаемой версии.

Очистка проекта Maven не помогла.

Чтобы решить эту проблему, мне просто пришлось закрыть окно с открытым доступом и использовать новый.

0

Если у вас есть второй проект, добавленный в ваш путь сборки, убедитесь, что он имеет ту же самую версию компилятора как ваш первый: Свойства → Компилятор Java → Уровень соответствия компилятора

0

Я решил эту проблему для меня, проверив, что Maven Dependencies были развернуты в сборке развертывания. В моем случае они не были.

Добавление исправления проблемы.

0

Добавьте это в свой файл pom.xml:

<project ....>
    <properties>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
    </properties>
</project>

Где 1.7 - версия Java, которую вы собираетесь использовать. Это перезаписывает параметр компилятора Maven, поэтому хорошо отлаживать здесь.

0

У меня возникла такая же проблема с IDE Spring Source Tool (STS) для проекта Grails. Я проверил установленную версию Java, а версия Java проекта - 1.7. *. Позже я обнаружил, что в файле GGTS.ini версия Java была установлена ​​в 1.6:

Решение:

-Dosgi.requiredJavaVersion = 1.6 изменено на
-Dosgi.requiredJavaVersion = 1,7
Добавьте ниже две строки перед -vmargs
-vm
jdk1.7.0_21/JRE/Library/amd64/сервер/libjvm.so

Проблема решена. Счастливое кодирование.

0

У меня была такая же ситуация, но ни один из вышеперечисленных советов не помог:) В нашей среде у нас был tomcat, работающий как служба в Windows. Мы установили Java 1.7 и установили JAVA_HOME в этой версии. Конечно, источники были построены на Java 1.7. Тем не менее tomcat сказал, что он использует предыдущую версию JVM. После глубокого анализа выяснилось, что служба Tomcat, установленная в Windows, все еще сохраняет старое значение JAVA_HOME, указывающее на Java 1.6. После установки новой службы Tomcat все было разрешено. Итак, вывод: когда вы меняете версию java и tomcat, работающую как службу, вам необходимо переустановить службу tomcat.

0

У меня такая же проблема, и я исправил эту проблему это решение на Mac. Надеюсь, это поможет кому-то. Это потому, что система не знает о более новой версии JDK, и она все еще указывает на старый JDK.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню