11

クラスパスにcommons-logging.jar(v1.0.4)とlog4j-1.2.8.jarがあり、次の実行時エラーが発生します。

Caused by: org.apache.commons.logging.LogConfigurationException: User-specified log class 'org.apache.commons.logging.impl.Log4JLogger' cannot be found or is not useable.
    at org.apache.commons.logging.impl.LogFactoryImpl.discoverLogImplementation(LogFactoryImpl.java:874)
    at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:604)
    at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:336)
    at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:310)
    at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:685)
4

10 に答える 10

15

Maven を使用している場合は、pom.xml で commons-logging と log4j を宣言する必要があります。

<dependencies>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.3</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
</dependencies>

commons-logging のみを宣言すると、エラーが発生しますLog4JLogger cannot be found or is not useable

于 2014-06-07T08:56:40.090 に答える
5

これはクラスパスの問題であり、クラスパスに別のバージョンの log4j がありました。ありがとうネイサン・ライアン!

于 2013-12-11T20:53:47.943 に答える
3

commons-logging-1.2 で log4j-2.x を使用すると、この問題が発生しました。log4j 1.2.xに戻しましたが、すべて問題ありません。

于 2014-12-11T00:25:08.807 に答える
1

これと同じ例外が発生しました。

私はロガーの実装を持っています。

文字列を引数として取るコンストラクターはありませんでした。

私はそのようなコンストラクターを実装しました、そしてそれは私のために問題を解決しました。

于 2013-03-08T18:27:38.640 に答える
1

ロガーの実装を提供する場合、その実装では、java.lang.String を引数として取るコンストラクターを定義する必要があります。そうしないと、「org.apache.commons.logging.LogConfigurationException: User-specified log class '...' cannot be found or is not useable.」が発生します。apache wikiのfaqページにはそう記載されています。

Web サービスやスプリングなどの特定のプロジェクトを作成していますか? はいの場合は、ロガーを参照するプロパティを持つプロジェクト固有のプロパティ ファイルを分析してください。

<property name="logger">javax.servlet,org.apache.commons.logging</property>

サーブレットを含む Java プロジェクトがある場合。

于 2012-05-22T07:56:52.553 に答える
0

私はこの問題に直面していましたが、log4j jar に関連するクラスパスの競合が原因であることがわかりました。プロジェクトでmavenを使用していたので、修正は以下のようにlog4jの依存関係管理を追加することでした。

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
于 2019-04-18T11:27:00.543 に答える