获取java.lang.ClassNotFoundException:org.apache.commons.logging.LogFactory异常

时间:2009-10-11 20:33:56

标签: java noclassdeffounderror

我正在执行spring& amp;的简单依赖注入程序得到这个例外。 我已经包含了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

25 个答案:

答案 0 :(得分:114)

我也遇到了同样的问题,要修复,从下面的网址下载jar文件

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

并复制到您的lib文件夹,将解决您的问题。

答案 1 :(得分:107)

如果您使用maven来管理依赖项,请在pom.xml中添加以下行:

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

答案 2 :(得分:36)

您只需下载commons-logging-1.1.2.jar,然后将此文件复制到libs

最后,它有效。

答案 3 :(得分:18)

我遇到了同样的问题,只需将commons-logging.jar添加到类路径即可解决问题。

答案 4 :(得分:15)

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>

答案 5 :(得分:8)

添加commons-logging.jar或commons-logging-1.1.jar将解决此问题......

答案 6 :(得分:6)

将范围设置为编译为我做了

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

答案 7 :(得分:5)

  

我已经包含了common-logging1.1.1.jar和...

您确定拼写了JAR文件的名称吗?我认为应该是commons-logging-1.1.1.jar(请注意名称中的额外-)。还要检查目录名是否正确。

NoClassDefFoundError总是意味着找不到类,所以很可能你的类路径不正确。

答案 8 :(得分:4)

通过添加commons-logging.jar

解决了问题

Imp文件是,

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

答案 9 :(得分:4)

尝试完全清除应用程序的目标/部署目录,以摆脱任何过时的库jar。进行全新构建并检查commons-logging.jar实际上是否放在正确的lib文件夹中。在为应用程序构建库时可能不包含它。

答案 10 :(得分:3)

我遇到了比你更多的麻烦。 最后,我检查了拥有该类的apache版本。 我发现版本1.0.4有类。

尝试使用版本1.0.4而不是1.1.X或1.2.X

我的依赖项:

    <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依赖项是否已导入。

答案 11 :(得分:3)

两个选项(至少):

  1. 将commons-logging jar添加到您的文件中,方法是将其复制到本地文件夹中。
  2. 注意:链接jar会导致服务器出现问题,也可能是因为它被添加到构建路径但没有解决服务器启动问题。

    所以不要将jar指向外部文件夹。

    ... OR

    1. 如果你真的不想在本地添加它,因为你在项目之间共享jar,那么......
    2. 如果您正在使用tc服务器实例,则需要将jar作为外部jar添加到服务器实例运行配置中。

      继续运行,运行配置...,{your tc server instance},然后运行Class Path选项卡。

      然后添加commons-logging jar。

答案 12 :(得分:1)

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

使用此网址下载jar文件并将其包含在您的类路径中,问题将得到解决

答案 13 :(得分: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已丢失。

答案 14 :(得分:0)

当jar存在时我得到了同样的错误。没有解决方案。有用的是从文件系统(从.m2目录)删除jar,然后清理maven项目。

答案 15 :(得分:0)

如果您在Android上运行此功能,请注意Android上显然没有完成java.beans个包。要尝试在Android上修复它,请尝试以下操作:

  1. 下载android-java-air-bridge.jar(目前下载按钮位于页面底部或direct link here
  2. 将下载的jar复制到 [APPROOT] / app / libs 目录(或以任何其他方式链接jar)
  3. import ***语句更改为air-bridge的语句。例如import javadz.beanutils.BeanUtils而不是import org.apache.commons.beanutils.BeanUtils;
  4. 清理并重建项目
  5. source 1source 2

    我道歉,因为我意识到这并没有完全回答这个问题,尽管在搜索android生成的NoClassDefFoundError: Failed resolution of: beanUtils错误时,这个SO页面出现了很多。

答案 16 :(得分:0)

我在eclipse IDE中遇到同样的问题,我的解决方案是: 右键点击 我的项目&gt;属性

enter image description here

点击 Maven 并在 Active Maven项目 中写下 jar

enter image description here

最后,申请并关闭

答案 17 :(得分:0)

嘿,我正在关注tutorialpoint.com上的教程。完成后添加步骤2 - 安装Apache Common Logging API :您必须从此步骤下载的文件中将外部jar 库导入项目。对我来说,文件名是“ commons-logging-1.1.1 ”。

答案 18 :(得分:0)

我通常将类路径分配给变量然后验证它。我写了一个小的ruby脚本,我将其包含在validates the classpath before launching java的启动脚本中。在JVM启动之前验证类路径为我节省了大量时间来解决这些类型的问题。

答案 19 :(得分:-1)

检查罐子是否正确导入。我使用构建路径导入它们。但它没有识别WAR / lib文件夹中的jar。后来,我将同一个jar复制到war / lib文件夹。它现在工作正常。您可以刷新/清理项目。

答案 20 :(得分:-1)

只需检查是否已将commons-logging.jar添加到您的libs和类路径中..我遇到了同样的问题,那是因为这个原因。 dhammikas -

答案 21 :(得分:-2)

尝试添加此依赖项              org.apache.commons         公地EXEC         1.3     

答案 22 :(得分:-2)

解决方案是添加 common-logging.x.x jar文件

答案 23 :(得分:-2)

你好朋友,如果你在hibernate代码中发现任何没有类的异常,那就是jar文件的问题。主要有两个问题
1.我的意思是说你的工作旧版本的hibernate可能是3.2以下。所以如果你尝试超过3.6它将工作正常

2.首先检查数据库连接。如果数据库工作正常,那么你的程序或jar文件就是错误的。

请检查这两个prioblems,如果它也无法正常工作你尝试IDE。我正在使用netbeanside 6.9版本。所以hibernate工作正常。你不会从类中得到任何错误而不是异常..

我希望这个有助于更多

答案 24 :(得分:-3)

如果所有其他方法都失败了,就像我一样,尝试将commons-logging-x.y.z.jar放在Tomcat lib目录中。它解决了这个问题!顺便说一下,我正在使用Tomcat 6。