Weld-SEで遊んでいます。プラグ可能なモジュールを持つプロジェクトがあります。1つのモジュールで、溶接が機能します。を使用する他のモジュール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>
。