2012-03-13 3 views
1

Weblogic 10.3.5にデプロイするWebアプリケーションで作業しようとしています。依存関係の1つはGuavaです。GuavaとWeblogic:ClassNotFoundException

は残念ながら、プロジェクトを発行しようとすると、WebLogicは、この例外がスローされます。

java.lang.ClassNotFoundException: com.google.common.eventbus.EventBus 
at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:297) 
at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:270) 
at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:64) 

私のMavenの依存関係の残りの部分は働いているように見えるが、私は、問題が何であるかわかりませんよ。

誰でもトラブルシューティングを支援できますか?環境はM2Eプラグイン付きEclipseで、Weblogic ServerはEclipseに統合されています。

更新:のpom.xmlでグアバエントリ:

<dependency> 
     <groupId>com.google.guava</groupId> 
     <artifactId>guava</artifactId> 
     <version>11.0.2</version> 
    </dependency> 

私は別のライブラリ(コモンズ-langの)含まれており、それがうまく働きました。

更新2:これはクラスローダーの問題です。私はこのブログからの手がかりを得た:http://blog.eisele.net/2011/12/running-richfaces-410final-on-weblogic.html。それはWLSのいくつかのGoogleのコモンズライブラリを使用しているようです。

私はweblogic.xmlファイルを変更してバージョンを使用しようとしていますが、動作していないようです。

+0

を? –

+0

更新された質問。 – Jason

+0

1.グアバのどのバージョンが解決されたかを知ることができました(m2eプラグインで見てください)。2.guava.jarはWebLogicにデプロイされたアプリケーションに含まれていますか? – korifey

答えて

3

weblogicフォルダのweblogic-home> modulesに移動し、com.google.common .... jarファイルがある場合は、削除してguava.jarファイルに置き換えて、名前を変更する必要があります古いcom.google.common ... jarの名前を持つguavaファイル(cuz weblogicはこの名前を探していますが、あなたのguavaファイルと競合しています)。

私は同じ問題here

+0

WLSで提供されているspring.jarと同じ問題がありますが、私は別の解決策を見つけようとしています。サーバーから提供されたジャーを削除すると、チェーンソーで手術をしていると私は思います。 – Jason

+0

それで、それを一切削除しないで、最初にカットアンドペーストして、私が言及したようにして、その作業が幸せならば!以前と同じ場所に貼り付け直すだけではない場合は、 –

11
  • を持っていたはい、それは、クラスローダの問題(のWebLogicクラスロード対アプリケーション)
  • guavaライブラリとcom.google.commonだWebLogicはmodulesディレクトリに、それのクラスパスにcom.google.common_1.0.0.0_0-6.jarまたはcom.google.common_1.1.0.0_0-6.jarを持って
  • 同じクラスが含まれています。 (WebLogicのバージョンによっては、JARの内容は同じですが、META-INF \ MANIFEST.MFのみが異なります)
  • このライブラリはWebLogic Classloader Analysis Tool(CAT)で見つけることができません。理由はわかりません....
  • FilteringClassLoadersの助けを借りてWebLogic組み込み機能を使用しないのはなぜですか?prefer-application-packages

は、あなたが次にアプリケーションを再デプロイEARアプリケーション

<wls:container-descriptor> 
    <wls:prefer-application-packages> 
      <wls:package-name>com.google.common.*</wls:package-name> 
    </wls:prefer-application-packages> 
</wls:container-descriptor> 

にある場合、あなたのweblogic.xmlまたはweblogic-application.xmlにこのような何かを追加する必要があります。

私たちのために働く。

  • 長所:&はcom.google.common * .jarファイルと魔法の名前を変更交換する必要はありません...それは自殺の方法です...

希望します。詳細情報については

、リンクを参照してください。あなたの `pom.xml`で依存関係がどのようなものに見えるん
http://www.lucubratory.eu/guava-and-weblogic12c/

+0

私のために働いても、weblogic.xmlはwls:接頭辞を使用しません...私はそれを削除して正常に動作しました。 –

+2

私は同様の問題を抱えており、この作業をしたいと考えています。問題は、これを追加するxmlがわからないことです。私はweblogic 12cを使用しています。これをベースxml、tempドメインxmlに追加してみました。また、プロジェクトのWEB-INFに新しいxmlを作成しました。最初の2つは機能しませんでした。 dtdの施行の最後に、prefer-application-packagesが無効であることが示されました。 – user3056052

+0

WAR:WEB-INF/weblogic.xml EARアプリケーションの場合META-INF/weblogic-application.xml xml構造体またはdtdバリデーターを確認してください。 Oracleのドキュメントは、その要素を持っています https://docs.oracle.com/middleware/1221/wls/WBAPP/weblogic_xml.htm#WBAPP660 XSDスキーマは、あまりにもそれを持っています http://xmlns.oracle.com/このグループ: - > xs:include'd schemaLocation = "http://xmlns.oracle.com/weblogic/weblogic-javaee/1.8/weblogic-javaee.xsd" – Casey

関連する問題