Сбой сборки и развертывания Java — Ant в JBoss из-за ошибки UnsupportedClassVersionError

#java #jakarta-ee #ant #maven-ant-tasks #jboss-4.0.x

#java #jakarta-ee #ant #maven-ant-задачи #jboss-4.0.x

Вопрос:

Я пытаюсь создать и развернуть проект в папке развертывания JBoss с помощью встроенного скрипта Maven-Ant из Eclipse, но в итоге JBoss всегда регистрирует следующее:

 nested throwable: (java.lang.UnsupportedClassVersionError: Bad version number in .class file)
  

Используемое программное обеспечение для этого проекта следующее:

  • Ant 1.6.5
  • Плагин задач Maven-Ant 2.1.3
  • JBoss 4.0.5 GA
  • JDK 1.4

В Eclipse в разделе Window> Preferences я добавил JDK в Java>Installed JREs список и на всякий случай установил для него значение по умолчанию. В разделе Project>Properties>Java Compiler я установил уровень соответствия на 1.4, а также безуспешно поиграл с другим параметром соответствия.

Кроме того, JBoss настроен на использование точно такого же JDK, который является 1.4_03 с веб-сайта Oracle. Странно то, что Eclipse имеет тенденцию идентифицировать его как версию 1.5. Например, на странице компилятора Java говорится:

При выборе соответствия требованиям 1.4 убедитесь, что установлена и активирована совместимая JRE (в настоящее время 1.5).

Кто-нибудь может дать несколько советов, где я мог ошибиться?

Заранее спасибо!

Комментарии:

1. Вы должны управлять платформой и убедиться, что в ваших параметрах сборки указана Java 4. Я бы взглянул на сценарий Ant и посмотрел, есть ли в нем исходный уровень, который переопределял бы любые настройки в Eclipse. Найдите записи target =»1.5″ в тегах javac.

2. Я проверил файлы сборки Ant, и ни у одного из них нет атрибута target или source в задаче javac.

Ответ №1:

Это означает, что какой-то класс внутри JBoss был скомпилирован с несовместимой (более поздней) версией Javac (имеет большее основное число), и ваш JRE runung JBoss отказывается загружать это.

(класс-нарушитель находится где-то в stacktrace)

Единственное решение — использовать более свежий JDK для запуска JBoss и компиляции (1.4 довольно старый, и AFAIK больше не поддерживается)

Ответ №2:

Я бы начал искать в ваших свойствах среды maven / ant.

Выбор jdk в Eclipse используется только в ide. java_home и другие параметры, заданные в ваших свойствах maven или свойствах ant, будут использоваться для компиляции и сборки.

Я бы также проверил вашу переменную среды JAVA_HOME, как если бы она явно не была установлена в файле свойств, она будет получена из среды.

Ответ №3:

Вам нужно убедиться, что сценарий Ant также использует правильную версию; то, что вы получаете предупреждение 1.5, немного беспокоит — мне трудно поверить, что Eclipse неправильно идентифицирует JDK. Кроме того, имейте в виду, что JDK — это не то же самое, что JRE, поэтому дважды проверьте свои пути / etc .

Вам также необходимо убедиться, что все ваши развернутые библиотеки и библиотеки JBoss скомпилированы с 1.4 — если в вашем проекте есть зависимости, скорее всего, их библиотеки не скомпилированы с 1.4.

Кроме того, выражение «J2EE JDK 1.4» немного сбивает с толку, потому что Java EE и Java SE — это две разные вещи, и вы не сможете запустить J2EE 1.4 под JDK 1.4, AFAIK.

Комментарии:

1. Этот материал по управлению версиями Java все еще сбивает меня с толку. Мне нужна была версия JDK 1.4, и я загрузил J2EE 1.4_03 с веб-сайта Oracle, чтобы убедиться, что он также включает в себя инфраструктуру JAAS. Я предполагал, что он включает в себя 1.4 JDK и, следовательно, соответствующий JRE. Я ошибаюсь?

2. @Raidok Зависит от того, что вы на самом деле загрузили — похоже, что есть загрузка, которая включает JDK, но она включает JDK 1.5, согласно этой странице загрузки .

3. О, это облом. Это тот, который я получил. Что ж, Eclipse был прав.

Ответ №4:

JDK, который я использовал, оказался неправильной версией. Я связался с одним из предыдущих разработчиков, и он сказал, что это определенно должно работать с обновлением JDK 1.5 9, и это все изменило. Я пропустил это неоднозначное сообщение об ошибке. Извините за беспорядок, ребята!