GWTアプリケーションを開発しています。 RPCを使用して、内部システムから情報を収集しています。ライブラリjarを使用してこれを行い、alpha.jarと呼びます。このjarを多くのアプリケーションで使用しているため、正常に機能し、Eclipseの外部でANTを使用してビルドされます。
Alpha.jarの一部のクラスはLOG4J2を参照し、他の多くの外部jarも参照するため、アプリケーションを実行すると、すべてにクラスパスが渡され、すべて正常に機能します。これは単純な初心者の問題ではないことに注意してください。 alpha.jarは、Log4Jへの呼び出しを含め、正常に機能しています。
問題:
Eclipseには、このGWTアプリケーションプロジェクトがあり、Alpha.jarプロジェクトもあります(もちろんソースコード付き)。サーバー部分は、アルファオブジェクトをインスタンス化し、アルファシステムと通信する必要があります。
Build-path-referenceをAlphaプロジェクトに追加してGWTでこれを行うと、GWTアプリが正常に実行されます。
プロジェクト参照の代わりにalpha.jarを(war/WEB-INF/libに)含めてアプリを実行すると、alpha.jarからクラスを初めてインスタンス化するときにタイトルにエラーが表示されます。
Alpha.jarの作成方法に特殊性はないため、基本的にはEclipseのプロジェクトと同じものである必要がありますか?
次のことに注意してください。
*)alpha.jarの依存jarもwar/WEB-INF/libにあります。 log4j2-core、log4j-api、およびその他の束(たとえば、Apache共通)
*)alpha.jar(およびそれを呼び出すコード)を削除し、代わりにLOG4J2を呼び出すコードを追加するだけで、そのコードも正常に機能します!
JARを使用しているときにこの奇妙なエラーが発生するのはなぜですか?また、より一般的なClassNotFoundExceptionではなく、NoClassDefFoundErrorにも注意してください。 Pls参照 NoClassDefFoundErrorとClassNotFoundExceptionの原因と違いは何ですか?
さらに情報が必要な場合はお知らせください。
org.Apache.log4j.LogManager
はlog4j 1.2のクラスです(log4j2ではありません)。
したがって、Webアプリjarの1つがそれを参照している必要があります。犯人はスタックトレースに表示されるはずです。
2つのバージョンは互いに完全に独立しているため、状況によっては、log4j 1.2 jarをWebアプリに追加することもできます。
Log4j 2を使用している場合は、log4j.xmlではなくlog4 -j2。xmlの名前を忘れないでください。
前述のとおり:
org.Apache.log4j.LogManager
は、log4j 1.2からのクラスです(log4j2ではありません)。
この問題は、log4j 1.2とlog4j 2.xを組み合わせて使用すると解決します。そのため、ブリッジAPIをプロジェクトに追加する必要があります。
これはMigrating
の問題です。
それらをあなたに追加pom.xml
<log4j2.version>2.7</log4j2.version>
<disruptor.version>3.3.6</disruptor.version>
<!--log4j2 dependencies -->
<dependency>
<groupId>org.Apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.Apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.Apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.Apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.Apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>${disruptor.version}</version>
</dependency>
次に、mvn dependency:resolve
を使用して、log4j 1.2が表示されないようにします。
[INFO] The following files have been resolved:
[INFO] org.springframework.data:spring-data-redis:jar:1.7.2.RELEASE:compile
[INFO] org.Apache.logging.log4j:log4j-api:jar:2.7:compile
[INFO] org.Apache.logging.log4j:log4j-slf4j-impl:jar:2.7:compile
[INFO] com.lmax:disruptor:jar:3.3.6:compile
[INFO] org.Apache.logging.log4j:log4j-1.2-api:jar:2.7:compile
[INFO] javax.mail:mail:jar:1.4.5:compile
[INFO] org.springframework:spring-tx:jar:4.3.1.RELEASE:compile
[INFO] org.Apache.logging.log4j:log4j-core:jar:2.7:compile
[INFO] org.Apache.logging.log4j:log4j-jcl:jar:2.7:compile
[INFO] javax.activation:activation:jar:1.1:compile
[INFO] org.springframework:spring-beans:jar:4.3.1.RELEASE:compile
[INFO] org.springframework:spring-web:jar:4.3.1.RELEASE:compile
[INFO] org.springframework:spring-webmvc:jar:4.3.1.RELEASE:compile
[INFO] org.springframework:spring-oxm:jar:4.2.6.RELEASE:compile
[INFO] org.springframework:spring-jdbc:jar:4.3.1.RELEASE:compile
[INFO] com.alibaba:fastjson:jar:1.2.4:compile
[INFO] mysql:mysql-connector-Java:jar:5.1.21:compile
[INFO] org.Apache.Tomcat:tomcat-servlet-api:jar:7.0.54:provided
[INFO] org.slf4j:slf4j-api:jar:1.7.21:compile
[INFO] org.springframework:spring-context-support:jar:4.3.1.RELEASE:compile
[INFO] commons-beanutils:commons-beanutils:jar:1.8.3:compile
[INFO] org.springframework:spring-context:jar:4.3.1.RELEASE:compile
[INFO] org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] redis.clients:jedis:jar:2.8.1:compile
[INFO] org.springframework:spring-expression:jar:4.3.1.RELEASE:compile
[INFO] org.springframework.data:spring-data-commons:jar:1.12.2.RELEASE:compile
[INFO] org.springframework.data:spring-data-keyvalue:jar:1.1.2.RELEASE:compile
[INFO] junit:junit:jar:4.12:test
[INFO] org.springframework:spring-core:jar:4.3.1.RELEASE:compile
[INFO] commons-logging:commons-logging:jar:1.2:compile
[INFO] org.springframework:spring-aop:jar:4.3.1.RELEASE:compile
[INFO] org.Apache.commons:commons-pool2:jar:2.4.2:compile
[INFO] org.slf4j:jcl-over-slf4j:jar:1.7.21:runtime
参照: