2017-01-13 11 views
0

Я работаю над проектом Java EE сJava EE проект столкнулся NoClassDefFoundError

  1. JDK 1.8
  2. wildfly 10.1.0 окончательного
  3. IntelliJ идея 2016,3

Проект имеет сеть прикладной модуль и модуль ejb, а структура выглядит следующим образом: project structure

И два модуля уже успешно развернуты enter image description here

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

Caused by: java.lang.NoClassDefFoundError: org/json/JSONArray

Я использую JSON в классе DAOHelperImpl в модуле ejb, и я уже добавляю зависимость. Я попытался поместить банку в различные пакеты, такие как/ejb/lib или/web/web/lib, но никто из них не работает.

Что случилось?

ответ

0

Перемещение баночки библиотеки из /web/web/lib в

/веб/веб/WEB-INF/Библиотека

По Конвенции общая папка для автоматического включены банки является:
web- project-name/webContent/WEB-INF/lib

Подробнее здесь: https://blogs.oracle.com/alexismp/entry/web_inf_lib_jar_meta

Я не знаю, как IntelliJ обрабатывает проекты Java EE.
В Eclipse EAR и WAR находятся в отдельных проектах и ​​могут быть назначены друг другу.

+0

Я пробовал ваш совет, но все же получил ту же ошибку. – Stone

+0

Мне трудно понять, почему проект EJB должен иметь зависимость, установленную в веб-проекте. – Stone

0

Я думаю, что эта ошибка возникает из-за моего плохого понимания того, как работает это веб-приложение вместе с модулем ejb: я разворачиваю веб-модуль и модуль ejb отдельно, и кажется, что wildfly может ссылаться только на lib веб-модуля. Решение состоит в том, чтобы развернуть только веб-приложение на сервере и добавить модуль ejb в веб-приложение.

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

  • Нет связанных вопросов^_^