3

ロギングのためにEclipseプロジェクトでlog4j.2.xを使用しようとしています。log4j2.xml という名前の conf ファイルは Java プロジェクトの直下にあり、クラスパスに必要な jar があります。テストすると、以下のエラー メッセージが表示されます。誰でもこれの解決策を教えてもらえますか? log4j2.xml:

<?xml version="1.0" encoding="UTF-8"?> <configuration status="WARN">  <appenders>
<Console name="Console" target="SYSTEM_OUT">
  <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>  </appenders>  <loggers>
<root level="error">
  <appender-ref ref="Console"/>
</root>  </loggers></configuration>

コンソールのエラー:

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/ILoggerFactory
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at org.apache.logging.slf4j.SLF4JLoggerContextFactory.<init>(SLF4JLoggerContextFactory.java:34)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at java.lang.Class.newInstance0(Class.java:372)
at java.lang.Class.newInstance(Class.java:325)
at org.apache.logging.log4j.LogManager.<clinit>(LogManager.java:84)
at Browserbot.<clinit>(Browserbot.java:17)Caused by: java.lang.ClassNotFoundException: org.slf4j.ILoggerFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356) ... 23 more

私のJavaファイル:

public class Browserbot {
static Logger logger = LogManager.getLogger(Browserbot.class.getName());

public static void main(String[] args){

    logger.error("File Not Found");}}       
4

6 に答える 6

9

slf4j.jarプログラムの実行中にクラスパスが見つかりません。slf4j と log4j の間の依存関係を理解し​​たり、jar をダウンロードしたりするには、次のリンクに従ってください。

http://www.slf4j.org

于 2013-08-24T17:14:22.700 に答える
2

追加の jar ファイルの追加を停止します。実際、必要な jar は 2 つだけです。 1. log4japi.jar 2. log4j-core.jar

これで問題が解決します

于 2015-10-02T16:04:00.027 に答える
0

この修正は、Web アプリケーションに固有のものです。

シャットダウン中に NoClassDefFoundError で同様の問題に遭遇しました。mojo によってリストされた jar ファイルに加えて、log4j-web-xx.jar も含める必要があり、それで問題が解決しました。

説明はここにあります: http://logging.apache.org/log4j/2.x/manual/webapp.html

于 2015-02-04T23:42:07.603 に答える
0

このエラーを解決する、関連する log4j jar ファイル (バージョン 2.) のみを含めます。私の場合、log4j に関する問題で言及したのと同じエラーで、「log4j-api-2.0-beta9.jar」と「log4j-core-2.0-beta9.jar」を除くすべての log4j jar ファイルを削除しました。これで問題は解決し、期待どおりに機能しました。エラーは有益ではなく、他の多くのjarファイルをダウンロードすることになりましたが、もちろんうまくいきませんでした. 関連する jar のみを含めることで、この問題を解決できます。

于 2013-10-20T15:40:12.580 に答える