206

我正在执行 spring 的简单依赖注入程序并得到这个异常。我已经包含了 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
4

26 回答 26

134

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

<dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.1</version>
</dependency>
于 2013-07-03T10:49:40.080 回答
124

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

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

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

于 2011-07-18T09:28:48.943 回答
42

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

最后,它起作用了。

于 2013-04-23T07:37:56.543 回答
21

commons-logging-1.1.1.jar 或 jcl-over-slf4j-1.7.6.jar 等

如果您使用的是 maven,请使用以下代码。

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>${slf4j.version}</version>
</dependency>
于 2014-07-17T15:38:28.203 回答
18

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

于 2013-04-27T11:42:44.240 回答
8

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

于 2016-06-08T08:03:31.320 回答
7

为我设置编译范围

<dependency>
  <groupId>commons-logging</groupId>
  <artifactId>commons-logging</artifactId>
  <version>1.2</version>
  <scope>compile</scope>
</dependency>
于 2016-04-26T15:33:16.577 回答
6

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

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

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

于 2009-10-11T20:51:21.620 回答
5

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

于 2009-10-11T20:49:54.400 回答
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
于 2013-06-25T13:27:49.050 回答
3

两个选项(至少):

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

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

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

或者...

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

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

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

然后添加 commons-logging jar。

于 2015-07-23T21:25:18.223 回答
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 依赖项是否已正确导入。

于 2017-03-14T20:59:49.587 回答
1

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

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

于 2012-07-30T09:09:08.423 回答
0

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

于 2009-12-24T03:14:23.347 回答
0

只需检查 commons-logging.jar 是否已添加到您的库和类路径中。我遇到了同样的问题,就是因为这个。法界——

于 2009-10-14T08:30:55.083 回答
0

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

于 2014-10-06T20:46:35.807 回答
0

The topic is very outdated. But it still can be met ourdays.

commons-logging, or also known as jcl is a deprecated library. The last version was exposed in 2014

You should avoid adding dependency on it directly in your projects. I assume the most of answers and the accepted one are not actual anylonger.

A preferrable way to use in your projects new alternatives, like slf4j or log4j2, which play the same role, as jcl. The reasons and motivation is another big topic, not for the scope of this issue.

If your application uses log4j2, and you meet the error, add dependency:

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

If you prefer slf4j, (already offered in previous comments/replies ) use:

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

If you use Spring, most probably you have in the dependency tree:

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

and it solves the issue as well.

In the examples I skipped certain versions by purpose, they get deprecated very quickly, see Offitial Maven repository.

In some cases you should not use version attribute at all, preferring using dependencies from BOM files. Spring is an example.

于 2022-01-20T11:48:33.567 回答
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已丢失。

于 2019-03-25T08:46:18.360 回答
0

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

于 2018-04-08T13:17:44.730 回答
0

我在 Eclipse IDE 中遇到了同样的问题,我的解决方案是:右键单击我的项目 > 属性

在此处输入图像描述

在Maven中点击,在Active Maven Project中写入:jar

在此处输入图像描述

最后,应用并关闭

于 2018-06-12T21:09:09.280 回答
0

如果您在 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错误时出现了很多。

于 2016-06-29T20:29:42.943 回答
-1

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

于 2014-09-16T12:00:53.050 回答
-2

你好朋友,如果你在hibernate代码中发现任何not class found异常,那是jar文件的问题。这里主要有两个问题
1.我的意思是说你工作的hibernate旧版本可能是3.2 bellow.So如果你尝试3.6以上它会工作正常

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

如果您尝试 IDE 也无法正常工作,请检查这两个问题。我正在使用 netbeanside 6.9 版本。这里休眠工作正常。你没有从类中得到任何错误,没有发现异常..

我希望这个能帮助更多

于 2013-07-18T07:14:58.697 回答
-2

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

于 2015-10-20T07:54:59.127 回答
-3

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

于 2014-08-14T19:01:15.253 回答
-4

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

于 2014-07-28T07:38:42.207 回答