2015-12-01 4 views
0

Мне нужно скомпилировать проект Java EE с JBoss 7. Когда я запускаю JBoss 7, Netbeans создает .war-файл. Из-за проблем с моей средой я должен развернуть этот .war-файл с Tomcat6 на виртуальной машине.Преобразование файла .war в нужную версию

Проблема в том, что созданный .war несовместим с tomcat6.

Я попытался установить tomcat7 на виртуальную машину, но у меня есть другие проблемы, такие как «NoClassDefFoundError».

Так что я ищу способ конвертировать .war в правильной версии. Как мне это сделать?

ответ

1

Там нет стандартного способа для достижения этой цели («преобразовать .war файл»), так как Tomcat6 (из коробки) не является сервер сертифицированных приложений JEE - только web container:

Apache Tomcat, сервлет и Java Server Pages контейнер

Таким образом, некоторые библиотеки, которые являются частью истинного сервера JEE-приложений не включены в комплект и присутствует в /lib папке простой установки Tomcat, для реализации экземпляра для JTA, JPA, CDI, JAX-RS, JAX-WS ...

Однако, вы можете попытаться загрузить усовершенствованную Tomcat, а именно TomEE, так как это - в его последний релиз - JEE6 сертифицирован (и имеет несколько variants):

Apache TomEE, выраженный "Томми", является сертифицированным стеком для веб-профилей с полным Apache Java EE 6, где Apache Tomcat является топ-собакой.

Это может быть хорошим решением для вашего подхода к миграции, поскольку JBoss7 также соответствует уровню JEE6.

После того, как у вас есть downloaded TomEE, вы можете попытаться развернуть ваше приложение там. Тем не менее, вы должны были предоставить полный стек или, по крайней мере, класс (включая полный пакет), который не найден, так как в JBoss 7 могут быть определенные сторонние библиотеки, которых нет в TomEE или других серверах приложений.

Надеюсь, это поможет.

+0

Я действительно не понимаю. Это только последняя версия tomcat? – Erlaunis

+0

Нет, это отличная версия Tomcat для поддержки JEE. – MWiesner

+1

Хорошо, я собираюсь попробовать, спасибо! – Erlaunis

0

У самих военных файлов нет версии.

В Java Classes у них есть версия Java (например, если они используют Java 7 или Java 8). Если ваш Tomcat работает на Java 6 и вы скомпилированы с Java 7, вы получите UnsupportedClassVersionError. Если это так, вам нужно либо обновить Java-версию Tomcat, либо скомпилировать свой код с помощью Java 6 (и удалить функции Java7).

Кроме того, возможно, что вы используете функции JBoss 7, которые недоступны в Tomcat 6 (например, вы ссылаетесь на Servlet 3.0 в своем приложении, но Tomcat не поддерживает эту версию) , Чтобы это работало в этом случае, вам придется удалить все функции, которые Tomcat не поддерживает.

+0

Спасибо, я пытаюсь скомпилировать с Java6 вместо Java7. Но вы сказали удалить функции Java7, о каких функциях вы говорите? – Erlaunis

+0

Язык-функции, такие как String в Switch-Case, действительны в Java7, но с Java 6 он не будет компилироваться. См. Http://docs.oracle.com/javase/7/docs/technotes/guides/language/enhancements.html#javase7 – hinneLinks

+0

, как правило, сертифицированные JEE6 серверы приложений совместимы с языковыми функциями Java7, и не нужно беспокоиться об этом. – MWiesner

Смежные вопросы