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

我正在执行简单的spring &依赖注入程序;获取此异常。 我已经包含了common-logging1.1.1.jar和spring.jar文件。你能帮我一下吗?< / p >

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
591252 次浏览

尝试完全清理应用程序的目标/部署目录,以摆脱任何陈旧的库jar。重新构建并检查common -logging.jar实际上是否被放置在正确的lib文件夹中。在为应用程序构建库时,可能不包括它。

我已经包括common-logging1.1.1.jar和…

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

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

只要检查common -logging.jar是否已经添加到你的类库和类路径..我也有同样的问题,就是因为这个。 dhammikas——< / p >

我通常将类路径分配给一个变量,然后验证它。我写了一个小ruby脚本,我包括在我的启动脚本在启动Java之前验证类路径。在JVM启动之前验证类路径为我节省了大量时间来解决这类问题。

我也遇到过同样的问题,要解决这个问题,请从下面的url下载jar文件

http://commons.apache.org/logging/download_logging.cgi < a href = " http://commons.apache.org/logging/download_logging.cgi " > < / >

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

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

使用这个url下载jar文件,并将它们包含在你的类路径中,问题将得到解决

你只需要下载commons-logging-1.1.2.jar,然后将这个文件复制到lib中

终于,它起作用了。

我遇到了同样的问题,并通过将commons-logging.jar添加到类路径来解决它。

添加common -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

如果你使用maven来管理依赖关系,在pom.xml中添加以下行:

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

你好朋友,如果你在hibernate代码中得到任何非类发现异常,这是jar文件的问题。这里主要有两个问题
1.我的意思是说你的旧版本的hibernate可能是3.2 bellow。所以如果你尝试3.6以上,它将工作良好

2.首先检查数据库连接。如果它的数据库工作正常,他们是一个错误在你的程序或jar文件。

请检查这两个问题,如果它也不工作,你尝试IDE。我使用netbeanside 6.9版本。这里hibernate工作正常。你不会从类not found exception中得到任何错误。

我希望这篇文章能更有帮助

common -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>

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

如果所有这些都失败了,就像我一样,尝试将commons-logging-x.y.z.jar放到Tomcat lib目录中。问题解决了!顺便说一下,我使用的是Tomcat 6。

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

嘿,我在tutorialpoint.com上看教程。在你完成步骤2 -安装Apache Common Logging API:后添加你必须从这一步下载的文件中导入外部罐子库到项目中。对我来说,文件名是“commons-logging-1.1.1”。

至少有两种选择:

  1. 将common -logging jar文件复制到本地文件夹中,添加到您的文件中。

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

所以不要把罐子指向外部文件夹。

还是……

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

如果您正在使用tc服务器实例,那么您需要将jar作为外部jar添加到服务器实例运行配置中。

去运行as,运行配置…,{你的tc服务器实例},然后是类路径选项卡。

然后添加common -logging jar。

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

将作用域设置为编译对我来说很有用

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

添加common -logging.jar或common -logging-1.1.jar将解决这个问题…

如果你在Android上运行这个,那么注意显然java.beans包在Android上是不完整的。尝试在Android上修复它,请尝试以下方法:

  1. 下载android-java-air-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

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

我遇到的麻烦和你一样。 最后,我检查了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依赖项是否导入良好。

我得到了同样的错误,而罐子是存在的。没有解决方法有效。有效的方法是从文件系统(从.m2目录)中删除jar,然后清理maven项目。

我在eclipse IDE中也有同样的问题,我的解决方案是: 右键单击我的项目>属性

enter image description here

Maven中单击并在Active Maven项目中写入:jar < em > < / em >

enter image description here

最后,应用并关闭

在我的例子中,我正在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丢失了。

这个话题已经过时了。但它仍然可以满足我们的日子。

commons-logging或也称为jcl是一个已弃用的库。最后一个版本是在2014年曝光的

您应该避免在项目中直接添加对它的依赖。我认为大多数答案和公认的答案都不再真实。

在你的项目中使用新的替代方法的一种更好的方式,如slf4jlog4j2,它们扮演着与jcl相同的角色。原因和动机是另一个大话题,不是针对这个范围的问题。

如果你的应用程序使用log4j2,并且遇到错误,添加依赖项:

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
<version>2.y.z</version>
</dependency>

如果你更喜欢slf4j,(在之前的评论/回复中已经提供了)使用:

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

如果你使用Spring,很可能在依赖树中有:

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jcl</artifactId>
</dependency>

这也解决了问题。

在示例中,我故意跳过了某些版本,它们很快就会被弃用,参见官方Maven存储库

在某些情况下,你根本不应该使用version属性,而宁愿使用来自BOM文件的依赖项。Spring就是一个例子。