UnsupportedClassVersionError при запуске Ant из eclipse

Я пытаюсь запустить ant-скрипт из eclipse, но он не работает со следующим сообщением:

BUILD FAILED
project_path/build.xml:5:
java.lang.UnsupportedClassVersionError: com/sun/tools/javac/Main :
Unsupported major.minor version 51.0

Однако, когда я запускаю это из командной строки (./ant), он работает, как и ожидалось.
Информация о среде:

  • ОС: Линукс Минт 64
  • Затмение: Юнона (4.2.1)
  • JDK: Oracle 1.7.0_11
  • Муравей (командная строка): 1.8.2

Я также установил «Ant Home» (в настройках eclipse) таким же, как тот, который я использую из командной строки.

Я много искал по этой проблеме, но не могу найти ничего, что помогло бы, я могу попробовать удалить все java (jdk/jre), которые у меня сейчас установлены, а затем переустановить java 7, но я предпочитаю не брать этот маршрут.

Любые идеи? Спасибо!


person Nitzan Tomer    schedule 29.01.2013    source источник


Ответы (3)


UnsupportedClassVersionError: com/sun/tools/javac/Main: неподдерживаемая версия major.minor 51.0

Это говорит о некоторой путанице между версиями — Ant пытается запустить Java 7 javac на Java 6 JVM. Посмотрите на свойства вашего проекта, строителей, Ant Builder и проверьте раздел пути к классам. В моем Eclipse с недавно созданным Ant Builder у меня есть tools.jar из моего 1.7 JDK, указанный в записях пользователей -> дополнительные задачи и поддержка. Если у вас то же самое, но ваш Eclipse сам работает на Java 6, то он не будет работать. Вы можете узнать, на какой Java Eclipse работает, через поле «о Eclipse» в разделе «Сведения об установке» -> «Конфигурация». Это может не совпадать с версией Java, на использование которой настроен ваш проект.

Еще одна вещь, которая может исправить это, — перейти на вкладку JRE в настройках ant builder и сказать, чтобы он запускался в отдельной JRE, а не в процессе Eclipse.

person Ian Roberts    schedule 29.01.2013
comment
Java по умолчанию на моей машине - 7, также eclipse использует java 7, хотя уровень соответствия установлен на 6 (изменение его на 7 не влияет на ошибку). У меня также есть tools.jar под java 7. - person Nitzan Tomer; 29.01.2013
comment
@NitzanTomer помогает запуск Ant в отдельном процессе? - person Ian Roberts; 29.01.2013
comment
Что значит отдельный процесс? Когда я запускаю в командной строке (это отдельный процесс), он работает нормально, но если вы имеете в виду каким-то образом запустить в отдельном процессе внутри eclipse, то я не уверен, что вы имеете в виду. - person Nitzan Tomer; 29.01.2013
comment
@NitzanTomer в настройках построителя Ant на вкладке JRE по умолчанию используется «Выполнить в той же JRE, что и рабочая область», но вместо этого вы можете выбрать отдельную JRE. - person Ian Roberts; 29.01.2013
comment
О, да, я всегда запускаю новые конфигурации Ant в той же JRE, что и флажок рабочей области, вы это имеете в виду? - person Nitzan Tomer; 29.01.2013
comment
Кроме того, затмение работает на java 7, и проект настроен на использование настроек по умолчанию, поэтому он также использует java 7. - person Nitzan Tomer; 29.01.2013
comment
Хорошо, мой плохой. На вкладке JRE любого компоновщика было установлено использование другой JRE. Я попал в это окно только при переходе на External Tools Configuration - person Nitzan Tomer; 29.01.2013

Ваша ant-задача Eclipse пытается запустить компилятор JDK Java7, используя JDK/JRE до Java7. Убедитесь, что вы используете Java7 JRE для запуска Eclipse.

person Anders R. Bystrup    schedule 29.01.2013
comment
Моя java по умолчанию - 7, я предполагаю, что когда я запускаю eclipse, он использует версию по умолчанию, не так ли? - person Nitzan Tomer; 29.01.2013
comment
Да, я ожидал этого. Тем не менее, попробуйте Help-›About Eclipse-›Installation Details и найдите java.version=... и/или java.runtime.version=... - person Anders R. Bystrup; 29.01.2013
comment
Да, работает как положено, пишет: java.version=1.7.0_11 - person Nitzan Tomer; 29.01.2013
comment
Странный. Из других ответов/комментариев я понял, что в вашей сборке Ant также выбрана JRE7 на вкладке JRE? Вы пробовали возиться с этим? - person Anders R. Bystrup; 29.01.2013
comment
Я не уверен, что вы имеете в виду, возиться с чем именно? - person Nitzan Tomer; 29.01.2013
comment
Извините... Пробую другие варианты. - person Anders R. Bystrup; 29.01.2013
comment
ХА! ладно, я что-то пропустил. В External Tools Configuration есть вкладка JRE, о которой вы говорили с Яном, я не знал об этом. Теперь, когда я нашел это, ошибка исчезла. Я приму ответ Яна, поскольку эта часть была упомянута в его первоначальном ответе, а не в его комментариях, что облегчит задачу другим людям, которые наткнутся на этот вопрос. Спасибо большое за вашу помощь! - person Nitzan Tomer; 29.01.2013

как правило, если вы скомпилируете Java-программу в Java 1.7, она создаст файл класса с основной версией 51.0, и если вы запустите ее в более низкой версии Java, вы получите

 java.lang.unsupportedclassversionerror unsupported major.minor version 51.0

проверьте это сообщение для более подробной информации о том же

person Avinash Nair    schedule 29.01.2013
comment
В этом случае класс, чья версия не поддерживается, — это com.sun.tools.javac.Main — компилятор Java, который находится в файле tools.jar JDK. - person Ian Roberts; 29.01.2013