2

OracleLinuxにOracleWeblogic11gをインストールし、jdeveloper11gを使用してOracleのADFチュートリアルの1つを完了しようとしました。プロジェクトを実行すると、エラーなしで正常にコンパイルされます。アプリケーションのweblogicサーバーへのデプロイが開始され、デフォルトのインターネットブラウザが開きます。ただし、エラー「500内部サーバーエラー」が表示されます。

次のエラーが発生します。

java.lang.NoClassDefFoundError: Could not initialize class org.apache.myfaces.trinidadinternal.convert.ColorConverter at....

私はこの問題についてインターネットを調査しましたが、周りにも尋ねましたが、一般的な答えはクラスパスに問題があるというものでした。おそらく、jdeveloperで使用されているライブラリはweblogicで同じではなく、プロジェクトがデプロイされます。

間違いなく問題がクラスパスであるかどうかを誰かが知ることができますか?また、weblogicサーバーに使用したのと同じクラスパスをデプロイするようにjdeveloperを設定するにはどうすればよいですか。

4

4 に答える 4

3

java.lang.NoClassDefFoundErrorクラスパス内のクラスの実行時バージョンがコンパイル時のバージョンと同じではないことを意味します。

問題は、サーバーのデプロイ時に見つかったクラスの複数のバージョンである可能性があります。org.apache.myfaces.trinidadinternal.convert.ColorConverterクラスがにあることに気づきましたtrinidad-impl.jar

ランタイムサーバー環境と独自のWebアプリケーションライブラリでこのようなjarがいくつ見つかったかを検索できますか?

Windowsでは、Jdev組み込みサーバーはこのフォルダーで実行されます

C:\ Users \ <...> \ AppData \ Roaming \ JDeveloper\system11.1.1.4.37.59.23または同様のもの

これは、他の領域ではなく、webapp / WEB-INF/libで必要です。

私のローカルでは、C:\ Users \ <...> \ AppData \ Roaming \ JDeveloper \ system11.1.1.4.37.59.23 \ o.j2ee.wlLibs \ jsp\Trinidad-Components1.2.warの下にJarがあります。

weblogic.xml設定を使用して、WEB-INF/libクラスをserver/libのクラスよりも優先してロードするように強制できると思います。

    <container-descriptor>     
<prefer-web-inf-classes>true</prefer-web-inf-classes>   
</container-descriptor> 
于 2012-06-14T08:31:08.023 に答える
2

これは、クラスパス上にない別のクラスをロードしようとしているクラスをロードしようとすると発生します。ColorConverter に必要なクラスを見つけて、それらがクラスパスに含まれていることを確認してください。

于 2012-06-13T17:55:26.197 に答える
1

まず第一に、サーバーに何をデプロイしていますか? ADF jar または WAR ファイル。あなたの場合 - アプリケーションサーバーに依存するjarがインストールされていない場合。WAR ファイルをデプロイする必要があります。

ビュー プロジェクトで、右クリックして [プロジェクト プロパティ] を選択します。次に、展開に移動し、展開プロファイルを編集します (何もない場合は作成します)。[他のプロジェクトのライブラリを含める] チェックボックスがオンになっていることを確認します。(IT は [ライブラリの依存関係] タブにあります)。

また、ここで役立つ情報が見つかるかもしれません。

お役に立てれば。マイケル

于 2012-06-20T07:56:48.457 に答える
0

使用すると、それらが欠落StackTraceしていることがわかりますclasses.jarが欠落していると思いますが、それはクラスパスにあるはずです。

于 2012-06-13T18:17:08.930 に答える