2

私の耳には apache commons lang があり、ear フォルダーにすべての jar があり、適切に構成されている ejb を呼び出していますが、ear を呼び出すと次のエラーが発生します。

Caused by: java.lang.ClassNotFoundException:    
org.apache.commons.lang.builder.ToStringBuilder from [Module "test.common:main"

Commons langを使用する私が作成(コンパイル)したモジュールからスローされます。jboss が ear デプロイメントから commons lang を使用しないのはなぜですか? モジュールがそれらを使用できるように、jar が耳の外側になければならない場所は他にありますか?

4

1 に答える 1

1

EARは分離されているため、モジュールはEARにパッケージ化されたものを認識できません。

モジュール自体も分離されています。module.xmlそのため、モジュールのファイルでモジュールへの「commonslang」の依存関係を提供する必要があります。たとえば、JBossAS7はcommons-langモジュールを提供します。これを依存関係としてmodule.xmlに含めることができます。

 <dependencies>
    <module name="org.apache.commons.lang" />
 </dependencies>

同様に、に同じ依存関係を追加できますEAR/META-INF/jboss-deployment-structure.xml。このように、モジュールとEARの両方が同じcommons-lang jarを使用するため、CLassCastExceptionsを回避できます。

export="true"または、依存関係をに追加してmodule.xml、モジュールを含めると、依存関係を他のパッケージにエクスポートすることもできます。

于 2013-03-14T03:24:42.580 に答える