我在和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依赖项:复制依赖关系java -cp .org.jboss.jawabot.JawaBotApp或简单地在NetBeans中运行web模块。
谢谢,Ondra
更新: JIRA:https://issues.jboss.org/browse/WELD-940
另外,我发现它可能是由Weld的扫描扩展<weld:scan>中的一个错误引起的。
发布于 2011-07-13 06:36:39
这是由使用焊缝扫描扩展程序( <weld:scan> )引起的
<includes>元素包含包通配符,导致在两个“包”中匹配类(在CDI /Weld术语IIUC中是.jar )。
我不知道我是用错了还是它是个虫子。
https://stackoverflow.com/questions/6632556
复制相似问题