2015-03-26 1 views
3

Я пытаюсь перенести приложение JSF на CDI. Я implented следующих изменений:WELD-001409 Неоднозначные зависимости для типа [EagerBeansRepository]

  • Добавлены пустой beans.xml файл WEB-INF
  • Изменено @ManagedBean «s к @Named
  • Изменены Всем области действия я должен КДИТЕ Скоупс (сессия, Просмотр, запрос)
  • Изменены все @E и @ManagedProperty к @Inject

Однако ошибка Omnifaces препятствует развертыванию, как я получаю следующую ошибку в три раза:

org.jboss.weld.exceptions.DeploymentException: WELD-001409 Неоднозначные зависимости для типа [EagerBeansRepository] с классификаторами [@default] в точке инъекции [[BackedAnnotatedField] @Inject частного org.omnifaces.ApplicationListener.eagerBeansRepository]. Возможные зависимости [[Managed Bean [класс org.omnifaces.cdi.eager.EagerBeansRepository] с квалификаторами [@Any @Default], управляемый компонент [class org.omnifaces.cdi.eager.EagerBeansRepository] с квалификаторами [@Any @Default]] ]

Я перешел на Omnifaces 1.8.1, и развертывание было успешным. Почему Omnifaces 2.0 приводит к этой ошибке?

среда разработки:

  • Glassfish 4
  • Omnifaces 2.0
  • JSF (Mojarra 2.2.0)
  • WELD-000900 2.0.0 (SP1) для
+0

Это исключение указывает на то, что OmniFaces JAR дублируется в пути к среде выполнения. Вы развертываете WAR или EAR? Где размещается OmniFaces JAR? Вы уверены, что рабочие папки GlassFish правильно очищены до развертывания? Кстати, пока вы на нем, я настоятельно рекомендую перейти на GlassFish 4.1. – BalusC

+0

@BalusC Я очистил рабочую папку Glassfish и развернул ее без каких-либо ошибок. Благодарю. Любые статьи или ссылки о том, почему я должен перейти на GlassFish 4.1? – fareed

+0

@BalusC Также вы можете поместить свой комментарий в качестве ответа, чтобы я принял его? Спасибо – fareed

ответ

4

Это исключение предполагает, что OmniFaces JAR (в частности, JAR, содержащий упомянутый неоднозначный класс, который находится в вашем конкретном случае EagerBeansRepository) i дублируется в пути выполнения. Если JAR правильно помещен в /WEB-INF/lib в webapp, а не в другом месте, это может произойти, если рабочие папки GlassFish не были должным образом очищены до развертывания. В частности, плагин GlassFish Eclipse, как известно, терпит неудачу. Вам нужно вручную очистить рабочие папки GlassFish в /glassfish/domains/[domainname].

Кстати, пока вы на нем, я настоятельно рекомендую перейти на GlassFish 4.1. GlassFish 4.0 похож на каждый первый выпуск GlassFish (все хлопоты, чтобы подготовить его как «Первый Java EE X Application Server» вместе с каждым новым выпуском Java EE API) слишком много ошибок детства.

+0

Что вы подразумеваете под чистым? Удалить папку? – uesports135

+1

@ uesports135: удалить содержимое папки, да. Сама папка также может (GF будет автоматически создавать новые), но не нужна. – BalusC

+0

Это не решает проблему. И я использую GF 4.1 – uesports135

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