[解決済み] 予期しない例外: java.lang.NoClassDefFoundError: org/apache/log4j/LogManager
質問
GWTアプリケーションを開発しています。RPCを使用して、内部システムから情報を収集しています。これは、alpha.jarと呼ばれるライブラリjarを使用することによって行われます。私たちは多くのアプリケーションでこのjarを使用しているので、問題なく動作しています。
alpha.jarのいくつかのクラスは、LOG4J2や他の多くの外部jarを参照しています。 アプリケーションを実行するときに、これらすべてのクラスパスを渡すと、すべてがうまくいきます。 . これは単純な初心者の問題ではないことに注意してください。alpha.jarはLog4Jの呼び出しを含め、正常に動作しています。
問題点は
Eclipseには、このGWTアプリケーションのプロジェクトと、Alpha.jarプロジェクト(もちろんソースコード付き)があります。サーバー部分は、Alphaオブジェクトをインスタンス化し、Alphaシステムと通信する必要があります。
Alphaプロジェクトにbuild-path-referenceを追加してGWTでこれを行うと、私のGWTアプリは正常に実行されます。
プロジェクトリファレンスの代わりにalpha.jarをinclude(war/WEB-INF/libに)してアプリを実行すると、alpha.jarから初めてクラスをインスタンス化するときに表題のエラーが発生します。
alpha.jarのビルドの仕方にクセはないので、基本的にはeclipseのプロジェクトと同じものでいいんですよね?
以下のことに注意してください。
*) alpha.jarの依存jarもwar/WEB-INF/libにあります。 log4j2-core、log4j-api、その他多数(例えばapache common)です。
*) alpha.jar(とそれを呼び出すコード)を削除して、代わりにLOG4J2を呼び出すコードだけを追加すると、そのコードも問題なく動作するようになりました
JARを使用すると、どうしてこのような変なエラーが出るのですか?NoClassDefFoundErrorにも注意してください。一般的なClassNotFoundExceptionではありません。参照してください。 NoClassDefFoundErrorとClassNotFoundExceptionの原因と違いは何ですか?
もっと情報が必要なら教えてください。
解決方法は?
org.apache.log4j.LogManager
は、log4j 1.2 のクラスです (log4j2 ではありません)。
したがって、Web アプリの jar のいずれかがそれを参照している必要があります。スタックトレースを見れば、その原因がわかるはずです。
あなたの状況によっては、2つのバージョンは互いに完全に独立しているので、ウェブアプリにlog4j 1.2のjarを追加するだけでもいいかもしれません。
関連
-
[解決済み】"比較メソッドはその一般契約に違反する!"
-
[解決済み】不正な反射的アクセスとは?
-
[解決済み】"|="の意味は何ですか?(パイプ等号演算子)
-
[解決済み】Gradleがtools.jarを見つけ出さない
-
[解決済み】どういう意味か。Serializableクラスがstatic final serialVersionUIDフィールドを宣言していないとは?重複している] [重複している] [重複している] [重複している
-
[解決済み] 原因:java.lang.NoClassDefFoundError: org/apache/log4j/Logger
-
[解決済み] IntelliJのインスペクションで「シンボルを解決できない」と表示されたが、コードはコンパイルされる
-
[解決済み】SLF4J:クラス "org.slf4j.impl.StaticLoggerBinder" の読み込みに失敗しました。
-
[解決済み】JARパッケージングにおけるmaven scope compileとprovidedの違いについて
-
[解決済み] Eclipseでプロジェクトを自動的にJARにビルドする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Android Studio クラス org.codehaus.groovy.runtime.InvokerHelper を初期化できませんでした。
-
[解決済み】指定された子にはすでに親がいます。先に子の親に対してremoveView()を呼び出す必要がある(Android)
-
[解決済み] メソッドがスーパータイプのメソッドをオーバーライドまたは実装していない - Overrideの場合
-
[解決済み】なぜjava.io.Fileにはcloseメソッドがないのでしょうか?
-
[解決済み】JLabelのテキストを中央に配置するには?
-
[解決済み】メソッド本体がない、またはJavaで抽象的な宣言をする
-
[解決済み】Javaのswitch文。定数式が必要だが、定数である
-
[解決済み】Ubuntu: OpenJDK 8 - パッケージを見つけることができません。
-
[解決済み】Eclipseで「パッケージエクスプローラー」ビューが見つからない
-
[解決済み】NoClassDefFoundErrorとClassNotFoundExceptionの原因や違いは何ですか?