java.lang.ClassNotFoundException:org.apache.commons.logging.LogFactory例外の取得


188

私は春の簡単な依存性注入プログラムを実行しています&この例外を取得しています。common-logging1.1.1.jarおよびspring.jarファイルはすでに含めています。外に出してくれませんか?

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:119)
    at org.springframework.context.support.AbstractXmlApplicationContext.<init>(AbstractXmlApplicationContext.java:55)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:77)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:65)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:56)
    at com.client.StoryReader.main(StoryReader.java:15)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    ... 6 more

2
まず、クラスパスが本当に正しいことを再確認してください。次に、jarを開いて、実際にorg.apache.commons.logging.LogFactoryクラスが含まれていることを確認します。最後に、クラスローダーにブレークポイントを設定してデバッグを試みます。
Kolibri

2
以下に示すすべての回答commons-loggingは、一歩後退しています。jcl-over-slf4j代わりに使用してください。
opyate 2015

AndroidでtestCompile 'commons-logging:commons-logging:1.1.1'をapp.gradleに追加
Roger Garzon Nieto

回答:


118

私も同じ問題に直面しています、修正するには、以下のURLからjarファイルをダウンロードします

http://commons.apache.org/logging/download_logging.cgi

libフォルダーにコピーすると、問題が解決します。


2
上記のcommons jarをクラスパスに追加した後でも、これは私には機能しません
Deen John

2
私にとっても。これらのライブラリは壊れています。それはとてもイライラします。
ウェソスデケソ2017

112

依存関係の管理にmavenを使用している場合は、pom.xmlに次の行を追加します。

<dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.1</version>
</dependency>


19

commons-logging-1.1.1.jarまたはjcl-over-slf4j-1.7.6.jar al

Mavenを使用している場合は、以下のコードを使用します。

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>${slf4j.version}</version>
</dependency>

2
「jcl-over-slf4j」を含めることが、私にとって有効な唯一のソリューションでした。私はすでに依存関係にcommons-loggingがありました。
イタロボルサット2017

私は春のブートバージョン2.0.1.RELEASEをmavenで使用しています。これも私にとって有効な唯一の解決策でした。
カルロスナント

18

同じ問題がありcommons-logging.jar、クラスパスにを追加するだけで解決しました。


8

commons-logging.jarまたはcommons-logging-1.1.jarを追加すると、これを解決できます...


6

common-logging1.1.1.jarおよび...

JARファイルの名前のスペルが正しいことを確認してください。私はそれはおそらくあるべきだと思いますcommons-logging-1.1.1.jar-名前の追加に注意してください)。また、ディレクトリ名が正しいか確認してください。

NoClassDefFoundError 常にクラスが見つからないことを意味するため、クラスパスが正しくない可能性があります。


2
NoClassDefFoundErrorクラス初期化子が不明瞭な状況で失敗する場合など、他のコーナーケースによっても発生する可能性があります。
skaffman 2009年

さらに、クラスのインスタンス化が失敗したためにNoClassDefFoundErrorを受け取った場合は、最初にExceptionInInitializerError例外を受け取っているはずです(もちろん、黙ってキャッチされた場合を除きます)。
Kolibri

そして、「s」を忘れないでくださいcommons-logging-1.1.1.jar
Glenn Lawrence

@GlennLawrenceありがとう、名前を修正しました。
Jesper

6

コンパイルするスコープを設定すると、私のためにそれを行いました

<dependency>
  <groupId>commons-logging</groupId>
  <artifactId>commons-logging</artifactId>
  <version>1.2</version>
  <scope>compile</scope>
</dependency>

1
私の状況を解決しました。Mockitoテストケースを実行すると、このエラーが発生し、pom.xmlでこの依存関係が解決されました。
venugopal 2017年

4

アプリのtarget / deploymentディレクトリを完全にクリーンアップして、古いライブラリjarを削除してみてください。新しいビルドを作成し、commons-logging.jarが実際に正しいlibフォルダーに配置されていることを確認します。アプリケーションのライブラリーをビルドしているときは含まれていない可能性があります。


4

commons-logging.jarを追加することで問題が解決しました

インプファイルは、

antlr-runtime-3.0.1

org.springframework.aop-3.1.0.M2

org.springframework.asm-3.1.0.M2

org.springframework.aspects-3.1.0.M2

org.springframework.beans-3.1.0.M2

org.springframework.context.support-3.1.0.M2

org.springframework.context-3.1.0.M2

org.springframework.core-3.1.0.M2

org.springframework.expression-3.1.0.M2

commons-logging-1.1.1

3

2つのオプション(少なくとも):

  1. commons-logging jarをローカルフォルダーにコピーして、ファイルに追加します。

注:jarをリンクすると、サーバーに問題が発生する可能性があり、それがビルドパスに追加されてもサーバーの起動の問題が解決されない理由かもしれません。

したがって、jarを外部フォルダにポイントしないでください。

または...

  1. プロジェクト間でjarを共有しているので、ローカルで追加したくない場合は...

tcサーバーインスタンスを使用している場合は、jarを外部jarとしてサーバーインスタンスの実行構成に追加する必要があります。

として実行、構成を実行...、{tcサーバーインスタンス}、[クラスパス]タブの順に移動します。

次に、commons-logging jarを追加します。


3

私はあなたと同じトラブルを経験しました。最後に、クラスを所有しているapacheのバージョンを確認しました。バージョン1.0.4にクラスがあることがわかりました。

1.1.Xまたは1.2.Xの代わりにバージョン1.0.4を使用してみてください

私の依存関係:

    <dependencies>
        <dependency>
            <groupId>org.jolokia</groupId>
            <artifactId>jolokia-core</artifactId>
            <version>1.3.5</version>
        </dependency>
        <dependency>
            <groupId>org.jolokia</groupId>
            <artifactId>jolokia-client-java</artifactId>
            <version>1.3.5</version>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.0.4</version>
        </dependency>
    </dependencies>

私のJavaコード

J4pClient j4pClient = new J4pClient("http://localhost:8080/jolokia");
J4pReadRequest req = new J4pReadRequest("java.lang:type=Memory","HeapMemoryUsage");
req.setPath("used");
J4pReadResponse resp = j4pClient.execute(req);
System.out.println(resp.getValue());

私の結果:

130489168

Mavenの依存関係が適切にインポートされていることも確認してください。



0

commons-logging.jarがライブラリとクラスパスに追加されているかどうかを確認してください。同じ問題が発生しましたが、これはそのためです。ダンミカス


0

通常、クラスパスを変数に割り当ててから、それを確認します。javaを起動する前にクラスパス検証する起動スクリプトに含める小さなrubyスクリプトを作成しました。JVMが起動する前にクラスパスを検証することで、これらのタイプの問題のトラブルシューティングに多くの時間を節約できました。


2
代わりにMavenなどのツールの使用を検討する必要があります。
Neovibrant 2012

0

ちょっと、私はtutorialpoint.comのチュートリアルに従っていました。完了したら追加してください手順2-Apache Common Logging APIをインストールした。このステップでダウンロードしたファイルからプロジェクトに外部jarライブラリをインポートする必要があります。私にとってのファイル名は「commons-logging-1.1.1」でした。


0

これをAndroidで実行している場合、Androidではjava.beansパッケージが完全ではないようです。Androidで修正するには、以下を試してください。

  1. ダウンロードアンドロイド-javaの-空気bridge.jar(現在はダウンロードボタンは、ページまたはの下部にあるここに直接リンク
  2. ダウンロードしたjarを[APPROOT] / app / libsにコピーしますディレクトリに(または他の方法でjarをリンクします)
  3. import ***ステートメントをair-bridge のステートメントに変更します。例えばのimport javadz.beanutils.BeanUtils代わりにimport org.apache.commons.beanutils.BeanUtils;
  4. プロジェクトをクリーンアップして再構築する

ソース1ソース2

Androidで生成されたNoClassDefFoundError: Failed resolution of: beanUtilsエラーを検索すると、このSOページが頻繁に表示されますが、これが質問に正確に回答しているわけではないことに気づきました。


0

jarが存在するときにも同じエラーが発生しました。解決策は機能しませんでした。機能したのは、jarをファイルシステム(.m2ディレクトリから)から削除してから、mavenプロジェクトをクリーンアップすることでした。


0

私はEclipse IDEでも同じ問題を抱えていますが、私の解決策は次のとおりです:プロジェクトを右クリック>プロパティ

ここに画像の説明を入力してください

クリックしますMavenのと書く:のActive Mavenのプロジェクト

ここに画像の説明を入力してください

最後に、適用して閉じる


0

私の場合、EclipseでTomcatアプリをテストしていて、このエラーが発生しました。私は.classpathファイルをチェックしてこのエントリを修正して解決しました:

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
    <attributes>
        <attribute name="maven.pomderived" value="true"/>
        <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
    </attributes>
</classpathentry>

属性org.eclipse.jst.component.dependencyがありませんでした。


-1

jarが正しくインポートされているかどうかを確認してください。ビルドパスを使用してインポートしました。しかし、WAR / libフォルダー内のjarを認識しませんでした。その後、同じjarをwar / libフォルダーコピーしました。現在は正常に動作しています。プロジェクトを更新/クリーンアップできます。


-2

こんにちは友人がクラスを取得していない場合、休止状態のコードで例外が見つかりましたそれはjarファイルの問題です。ここでは主に2つの問題
1.私が使用しているhibernateの古いバージョンが3.2である可能性があることを意味します.3.6以上で試してみると、正常に動作します

2.最初にデータベース接続をチェックします。データベースが正常に機能している場合は、urプログラムまたはjarファイルの誤りでした。

IDEを試してもうまくいかない場合は、これら2つの問題を確認してください。私はnetbeanside 6.9バージョンを使用しています。ここでhibernateは正常に機能します。例外ではないクラスからエラーが発生しません。

これがもっとお役に立てば幸いです


-2

解決策はcommon-logging.xx jarファイルを追加することです



-3

他のすべてが失敗した場合は、私の場合と同様に、Commons-logging-xyzjarをTomcat libディレクトリに配置してみてください。問題は解決しました!ところで、私はTomcat 6を使用しています。


名前のこと?あなたは何について話していますか?
ボブV.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.