JBoss - приложение должно быть скомпилировано под тем же jdk, под которым работает JBOSS? - PullRequest
1 голос
/ 12 марта 2010

Я немного запутался из-за JBOSS и запуска его под разными JDK. Например, предположим, что я использую JBOSS 5.1, и перед запуском я установил JAVA_HOME, чтобы он указывал на JDK5. Давайте также предположим, что мое приложение Java EE скомпилировано в JDK6. Если я развертываю приложение Java EE (скомпилированное в JDK6) в JBOSS, при попытке поиска своих EJB я получаю сообщения об ошибках типа:

javax.naming.NameNotFoundException: tc_test_project not bound

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

Аналогично, я могу установить JAVA_HOME в JDK6 и запустить JBOSS, и мой код (скомпилированный в JDK6) будет работать нормально в этом сценарии (он может найти EBJ и т. Д.).

Таким образом, кажется, что ваше приложение Java EE должно быть скомпилировано под тем же JAVA_HOME, на котором будет работать сервер JBOSS, или я что-то неправильно понимаю? Просто хотел получить подтверждение, спасибо.

Ответы [ 2 ]

6 голосов
/ 12 марта 2010

Приложение должно быть скомпилировано с той же или более низкой версией JDK, использованной для запуска JBOSS. Это потому, что приложение будет использовать ту же JVM.

0 голосов
/ 12 марта 2010

Нет, вы должны иметь возможность компилировать с JDK6, если вы передадите опцию -target 1.5, чтобы она выводила файлы классов java 1.5. Добавьте -source 1.5, если вы хотите, чтобы вас отмечали за использование новых языковых функций.

Таким образом, его можно скомпилировать с более новым JDK, если вы нацелены на версию виртуальной машины, под которой будет работать приложение (и только используете функции, которые существуют на целевой виртуальной машине).

РЕДАКТИРОВАТЬ: Я никогда не утверждал, что это хорошая идея или право, только это возможно.

...