これらの問題をデバッグする正しい方法は何ですか?
私の場合、Java EE Web プロジェクト内で LinkageError に大きな問題があります。
問題
JSF API (jboss-jsf-api_2.2_spec-2.2.5.jar) を wildfly モジュール ディレクトリに含めました。つまり、これは Wildfly クラスローダーによってロードされます。その JSF 実装にも依存する外部ライブラリがあります (Primefaces や OmniFaces など)。さらに、ビルド プロセスをエラーなしで実行するには、ライブラリを個別の EAR ライブラリとして追加する必要があります。
奇妙な方法は、faces イベントパラメーターを使用して関数を実装する Bean を追加する場合です。
public void myValueChangeListener(ValueChangeEvent e) {
// do sth.
}
これらの機能を実装すると...
10:22:18,571 WARN [org.jboss.modules] (MSC service thread 1-1) Failed to define class javax.faces.event.ValueChangeEvent in Module "javax.faces.api:main" from local module loader @468a169f (finder: local module finder @13d344e7 (roots: /home/user/app-server/wildfly8/modules,/home/user/app-server/wildfly8/modules/system/layers/base)): java.lang.LinkageError: loader constraint violation: loader (instance of org/jboss/modules/ModuleClassLoader) previously initiated loading for a different type with name "javax/faces/event/ValueChangeEvent"
...私のSEVEREの出発点
10:22:18,578 SEVERE [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-1) Critical error during deployment: : java.lang.LinkageError: loader constraint violation: loader (instance of org/jboss/modules/ModuleClassLoader) previously initiated loading for a different type with name "javax/faces/event/ValueChangeEvent"
(パラメーターを削除すると、エラーなしでプロジェクトをビルドできます)
質問
そのような問題にどのように対処するのですか?クラスがロードされる順序についての概要が必要です。クラスローダ ツリー全体を表示する方法や、同じことを行うプロファイリング ツールがおそらくあるでしょう。