1

我正在玩 Weld-SE。我有一个具有可插拔模块的项目。使用一个模块,焊接工作。当使用 的其他模块weld-servlet-core被放在类路径上(使用它的 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 中运行 web 模块。

谢谢, 翁德拉

更新: JIRA: https
://issues.jboss.org/browse/WELD-940 另外,我发现它可能是由 Weld 的扫描扩展中的错误引起的,<weld:scan>.

4

1 回答 1

1

它是由使用 Weld 的扫描扩展程序引起的<weld:scan>

一个<includes>包含包通配符的元素导致两个“包”中的匹配类(在 CDI / Weld 的术语 IIUC 中是 .jar)。

我不确定是我使用不当还是错误。
请参阅 JIRA:https ://issues.jboss.org/browse/WELD-940

于 2011-07-13T06:36:39.740 回答