2013-04-04 2 views
0

При развертывании проекта EJB в JBoss с использованием JBoss Maven Plugin я получаю NoClassDefFoundError на консоли JBoss о классе, который находится в одной из зависимостей этого проекта EJB.mvn jboss: развернуть с помощью NoClassDefFoundError

Эта зависимость объявлена ​​областью компиляции. Есть ли другая область, которую я должен использовать, чтобы мои зависимости также были развернуты в JBoss? Или как я могу это решить?

ошибка выглядит следующим образом:

DEPLOYMENTS IN ERROR: 
    Deployment "vfszip:/Users/hordine/projects/SoftBudget/soft-budget-ejb/target/soft-budget-ejb.jar/" is in error due to the following reason(s): java.lang.NoClassDefFoundError: br/com/pedra/j2eepatterns/facade/IEntityService 
+1

Какой у вас пакет ejb? банку, войну или ухо? –

+0

В качестве банки. Я не хочу разворачивать зависимости отдельно, копируя их в папку lib сервера, возможно ли это? –

ответ

1

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

AFAIU, может быть 3 возможных способов, как следующее: -

  1. Пакет их как ear и поместить эти зависимости внутри ear/lib. Для получения дополнительной информации см. Maven EAR Plugin.

  2. Упакуйте их как war и разместите эти зависимости внутри WEB-INF/lib. Для получения дополнительной информации см. Maven WAR Plugin.

  3. Упакуйте их как jar и поместите эти зависимости внутри classpath или application server lib. Обратитесь к документу сервера приложений.

Редакцией: Если вы используете JavaEE 6, то можно упаковать EJB как war файл. The Java EE 6 Tutorial: Packaging Enterprise Beans in WAR Modules сказал нам как

Предприятие-фасоль часто обеспечивает бизнес-логику веб-приложения. В этих случаях упаковки предприятия в пределах веб-приложений WAR-модуля упрощает организацию развертывания и применения. Компоненты предприятия могут быть упакованы в WAR-модуль как файлы классов языка программирования Java или в файл JAR, входящий в модуль WAR.

Чтобы включить enterprise bean файлы классов в WAR module, файлы классов должны быть в WEB-INF/classes каталоге.

Чтобы включить JAR file, который содержит enterprise bean сек в WAR module, добавить JAR в WEB-INF/lib директории модуля WAR.

В модулях WAR, содержащих корпоративные компоненты, не требуется описатель развертывания ejb-jar.xml. Если приложение использует ejb-jar.xml, оно должно быть расположено в WAR в каталоге WEB-INF.

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

+0

Я упаковал их как банку, да. Спасибо за варианты, но я не хочу разворачивать их в EAR, и я не думаю, что вы можете упаковать EJB как WAR. (или вы можете). Я хочу развернуть их как Jar. Я боялся, что мне придется развернуть зависимости отдельно, да. Я дал вам голосование, но давайте посмотрим, есть ли у кого-то еще лучшая идея. –

+1

Если вы используете JavaEE6, можно поместить 'EJB' как' war'. Пожалуйста, ознакомьтесь с моими изменениями для получения дополнительной информации. –

+0

Спасибо за всю информацию, это хорошо знать все это, но я использую JBoss 5 и JavaEE 5. –

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