Я играю с Weld-SE. У меня есть проект, который имеет подключаемые модули. С одним модулем сварка работает. Когда другой модуль, который использует weld-servlet-core
, помещается в classpath (с его deps), CDI перестает работать, выдавая ошибки типа «Невозможно разрешить зависимость XY» или (после удаления этого @Inject
) это:
Exception in thread "main" org.jboss.weld.exceptions.DeploymentException: WELD-001417 Enabled interceptor class <class>org.jboss.weld.environment.se.jpa.JpaTransactionInterceptor</class> in jar:file:/mnt/ssd1/data/.m2/repository/org/jboss/jawabot/JawaBot-core/2.0.0-SNAPSHOT/JawaBot-core-2.0.0-SNAPSHOT.jar!/META-INF/beans.xml@11 is neither annotated @Interceptor nor registered through a portable extension
at org.jboss.weld.bootstrap.Validator.validateEnabledInterceptorClasses(Validator.java:466)
...
Хотя класс имеет @Interceptor
(и тот же класс отлично работает с другим модулем).
Когда я отлаживаю WeldBootstrap#startContainer(Environment environment, Deployment deployment)
,
deployment.beanDeploymentArchive.beanClasses
содержит перехватчик
("org.jboss.weld.environment.se.jpa.JpaTransactionInterceptor"
).
Я проверил зависимости и отчет TattleTale, все они выглядят нормально.
Есть идеи, на что мне посмотреть / попробовать дальше?
Проект находится на http://ondrazizka.googlecode.com/svn/trunk/bots/JawaBot/branches/2.0/ Чтобы увидеть ошибку, выполните mvn dependency: copy-dependencies java -cp ... org.jboss.jawabot.JawaBotApp Или просто запустите веб-модуль в NetBeans.
Спасибо, Ондра
Обновление: JIRA: https://issues.jboss.org/browse/WELD-940
Кроме того, я обнаружил, что это может быть вызвано ошибкой в расширении сканирования Weld, <weld:scan>
.