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


188

我正在执行spring的简单Dependency Injection程序并获取此异常。我已经包含了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代替。
2015年

在Android中,将testCompile'c​​ommons-logging:commons-logging:1.1.1'添加到app.gradle
Roger Garzon Nieto

Answers:



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。
Italo Borssatto

我正在使用带有Maven的spring-boot版本2.0.1.RELEASE。这也是唯一对我有用的解决方案。
卡洛斯·南特

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's

此外,如果由于类实例化失败而导致NoClassDefFoundError,则他应该首先获得ExceptionInInitializerError异常(除非它被静默捕获)。
Kolibri

并且不要忘记“ s”commons-logging-1.1.1.jar
Glenn Lawrence

@GlennLawrence谢谢,固定了名字。
杰斯珀,2015年

6

设置编译范围对我有用

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

1
解决了我的情况。在运行Mockito测试用例时,出现此错误并解决了pom.xml中的这种依赖性。
venugopal

4

尝试彻底清除该应用程序的target / deployment目录,以摆脱所有过时的库jar。重新构建并检查commons-logging.jar实际上是否放置在正确的lib文件夹中。在为应用程序构建库时,可能不包括它。


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

3

两个选项(至少):

  1. 通过将commons-logging jar添加到您的文件中,方法是将其复制到本地文件夹中。

注意:链接jar可能会导致服务器出现问题,也可能是将其添加到构建路径但不能解决服务器启动问题的原因。

因此,请勿将罐子指向外部文件夹。

要么...

  1. 如果您真的不想在本地添加它,因为要在项目之间共享jar,那么...

如果使用的是tc服务器实例,则需要将jar作为外部jar添加到服务器实例运行配置中。

依次运行为,运行配置...,{您的tc服务器实例},然后单击“类路径”选项卡。

然后添加commons-logging jar。


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



0

只需检查commons-logging.jar是否已添加到您的库和类路径中即可。达尼米卡斯



0

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


0

如果您是在Android上运行此程序,请注意,显然该java.beans程序包在Android上并不完整。要尝试在Android上修复它,请尝试以下操作:

  1. 下载android-java-air-bridge.jar(当前,下载按钮位于页面底部,或在此处直接链接
  2. 将下载的jar复制到您的[APPROOT] / app / libs目录(或以其他任何方式链接jar)
  3. import ***语句更改为空桥。例如import javadz.beanutils.BeanUtils代替import org.apache.commons.beanutils.BeanUtils;
  4. 清理并重建项目

来源1来源2

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




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

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


-2

您好朋友,如果您在休眠代码中发现任何未分类的异常,则是jar文件的问题。这主要是两个问题1.
我的意思是说您正在使用的旧版本的hibernate可能是3.2以下,因此,如果您尝试在3.6以上运行,它将工作良好

2.首先检查数据库连接。如果数据库正常工作,则说明您的程序或jar文件中存在错误。

如果您尝试使用IDE还是不起作用,请检查这两个问题。我正在使用netbeanside 6.9版本。在这里,hibernate可以正常工作。

希望这对您有所帮助


-2

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


-2

尝试添加此依赖项org.apache.commons commons-exec 1.3


-3

如果所有其他方法都失败了,请尝试将commons-logging-xyzjar放在Tomcat的lib目录中。它解决了问题!顺便说一句,我正在使用Tomcat 6。


名字吗?你在说什么?
Bob V.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.