NoClassDefFoundError: org.slf4j. LoggerFactory

在运行 feed 实用程序时,我得到了下面提到的错误。我试图加载一个图像“ Logo.png”。运行时类路径中也有 slf4j jar 文件。但我仍然得到这个错误。

Oct 16, 2012 7:34:11 PM com.ibm.commerce.foundation.dataload.FeedRetriever  invokeDataLoad
SEVERE: An error occurred while performing data load.
Throwable occurred: com.ibm.commerce.foundation.dataload.exception.DataLoadException:
An error occurred while executing the data load.


java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory


at com.ibm.commerce.foundation.dataload.DataLoaderMain.execute(DataLoaderMain.java:664)
at com.ibm.commerce.content.commands.DataLoadInvoker.execute(DataLoadInvoker.java:101)
at com.ibm.commerce.foundation.dataload.FeedRetriever.invokeDataLoad(FeedRetriever.java:244)
at com.ibm.commerce.foundation.dataload.FeedRetriever.execute(FeedRetriever.java:172)
at com.ibm.commerce.foundation.dataload.FeedRetriever.main(FeedRetriever.java:321)
Caused by: java.lang.RuntimeException: java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory
at com.ibm.commerce.foundation.dataload.DataLoaderMain.execute(DataLoaderMain.java:488)
... 4 more
Caused by: java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory
at org.apache.wink.client.ClientConfig.<clinit>(ClientConfig.java:52)
at java.lang.J9VMInternals.initializeImpl(Native Method)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:167)
at com.ibm.commerce.foundation.dataload.feedreader.AtomReader.getFeed(AtomReader.java:104)
at com.ibm.commerce.foundation.dataload.feedreader.AtomReader.getEntries(AtomReader.java:147)
at com.ibm.commerce.foundation.dataload.feedreader.AtomReader.getEntries(AtomReader.java:1)
at com.ibm.commerce.foundation.dataload.feedreader.BaseFeedReader.init(BaseFeedReader.java:252)
at com.ibm.commerce.foundation.dataload.AbstractBusinessObjectLoader.initializeDataReaders(AbstractBusinessObjectLoader.java:1344)
at com.ibm.commerce.foundation.dataload.AbstractBusinessObjectLoader.init(AbstractBusinessObjectLoader.java:369)
at com.ibm.commerce.foundation.dataload.BusinessObjectLoader.init(BusinessObjectLoader.java:65)
at com.ibm.commerce.foundation.dataload.DataLoaderMain.execute(DataLoaderMain.java:431)
... 4 more
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.lang.ClassNotFoundException.<init>(ClassNotFoundException.java:76)
at java.net.URLClassLoader.findClass(URLClassLoader.java:396)
at java.lang.ClassLoader.loadClass(ClassLoader.java:660)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:358)
at java.lang.ClassLoader.loadClass(ClassLoader.java:626)
... 16 more
Oct 16, 2012 7:34:11 PM com.ibm.commerce.foundation.dataload.FeedRetriever main
SEVERE: An error occurred while performing data load.
Throwable occurred: com.ibm.commerce.foundation.dataload.exception.DataLoadException: An error has occurred.  If this problem persists, contact product support.
at com.ibm.commerce.foundation.dataload.FeedRetriever.invokeDataLoad(FeedRetriever.java:247)
at com.ibm.commerce.foundation.dataload.FeedRetriever.execute(FeedRetriever.java:172)
at com.ibm.commerce.foundation.dataload.FeedRetriever.main(FeedRetriever.java:321)
378931 次浏览

您必须提供各种 SLF4J 实现之一。类路径中的 jar 文件以及接口。Jar 文件。这是有记录的。

根据错误消息,LoggerFactory 类正在丢失:

NoClassDefFoundError: org.slf4j. LoggerFactory

显然,由于某种原因 slf4j.jar文件没有被加载。

下载 slf4j-1.7.5.zip

它保存不同的 jar 文件。

解压缩 zip 后,转到-> Integration 文件夹,并包含以下 jar 文件

  1. Slf4j-api-2.0.99
  2. Slf4j-simple-1.6.99
  3. Junit-3.8.1

使用 maven 它将为您下载所有必需的 jar 文件。

在这种情况下,您需要以下 jar 文件:

Slf4j-log4j12-1.6.1. jar Slf4j-api-1.6.1. jar

这些罐子还将取决于您正在运行的 Cassandra 版本。 您使用的是 Cassandra 版本、 jar 版本和 jdk 版本。

您可以使用: jdk1.6 演员: Cassandra 1.1.12 以及上面的罐子。

确保您的 名单包含我的应用程序中引用的 jar 的名称是 Slf4j-api-* . jar

发生此错误是因为在项目的订单和导出选项卡中没有检查引用的 jar。

选择 Project-> ALT + E nter-> Java Build Path-> Order and Export-> 将必要的 jar 文件检查到项目中。

最后清理项目并运行它,它将成功运行。

添加一个 SLF4J 实现(因为您只有它的 API) :

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.26</version>
</dependency>

您需要 slf4j-api 库,在大多数情况下只需要 slf4j-api 和 slf4j-jkd14:

这里 你可以下载1.7.2版本:

slf4j-api-1.7.2.jar
slf4j-jkd14-1.7.2jar

如果你需要一个例子来了解如何使用它们,请参考本教程: Http://www.ibm.com/developerworks/java/library/j-hangman-app/index.html

本教程的所有 密码都可用

当我们使用 slf4j api jar 时,我们需要任何类似 log4j 的 logger 实现。在我的系统中,我们有完整的一套,它工作得很好。

1. slf4j-api-1.5.6.jar
2. slf4j-log4j12-1.5.6.jar
3. **log4j-1.2.15.jar**

右键单击项目属性,按照下面的步骤“项目属性”—— > “部署装配”,添加“ Java 构建路径条目-> Maven 依赖项

如果缺少类 Lf4j. LoggerFactory,请添加以下依赖项。

<dependency>
<groupId>com.vaadin.external.slf4j</groupId>
<artifactId>vaadin-slf4j-jdk14</artifactId>
<version>1.6.1</version>
</dependency>

如果您丢失了任何其他 Org.slf4j 伐木工厂,只需转到 Maven 中心类名称搜索并搜索确切的类名,以确定您丢失了什么确切的依赖项。

我也有过类似的问题。我有个 Maven 项目,正在测试 Rabbitmq。首先,它向我展示了类似的错误,然后我添加了所有的 SLF4J 依赖项在 Maven 项目,然后错误改为“ Maven SLF4J: 类路径包含多个 SLF4J 绑定”。下面是 pom.xlm 中依赖项的完整列表

<dependencies>
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.21</version>
<scope>compile</scope>
</dependency>
</dependencies>

终于成功了。

获取这个 jar slf4j-jdk14的兼容版本,并将其作为依赖项添加。 这解决了我的问题。

您需要 slf4j-api 库和 slf4j-log4j12-1.7.25 jar。将这个 jar 复制到您的项目-> WEBINF-> lib 文件夹和 tomcat server lib 文件夹中,以便成功执行。

当您从 maven 存储库复制依赖项时,有:

<scope>test</scope>

尝试像下面这样从 pom.xml 中的依赖项中删除它。

<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>

这对我有用,我希望对其他人也有帮助。

您可以使用下列依赖项

<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.7</version>
</dependency>

将以下 jar 添加到类路径或 lib 文件夹

  1. Slf4j-api-1.7.2. jar
  2. Slf4j-jdk14-1.7.2. jar

我当时也面临着类似的问题,下面这句话为我解决了这个问题。

    <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>

编辑: 我意识到我正在使用 spring boot,并且从 spring-boot-starter-father 中提取了依赖项的版本。

这对我/properties/maven 来说很有效,取消选中 Workspace 项目的解析依赖关系。

首先,检查依赖层次结构,而不是从其他依赖项中排除所有 slf4j jar,并添加单独的 slf4j 作为依赖项。

我相信答案就在 slf4j 网站(加载 org.slf4j.impl.StaticLoggerBinder 类失败)上

对于一个非常快速的解决方案,我建议添加 no-operation (NOP)日志记录器实现(slf4j-NOP.jar)

例如,如果使用 maven:

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

我尝试了其他解决方案,但这个例外并没有消失。因此,我使用 Java 反编译器反编译了整个 jose4j 0.6.5 jar,并查看了它的 pom.xml。

我意识到它特别依赖于 Slf4j-api,版本1.7.21: enter image description here

因此,在我的项目的 pom.xml 中,我添加了完全相同的依赖项,更新了我的 Maven 项目,以便它将这个 jar 下载到我的存储库中,然后异常就消失了。

然而,它可能会带来由 slf4j 本身引起的另一个错误:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

为了克服这个问题,我在项目的 pom.xml 中添加了以下内容。因此,总的来说,您需要将以下内容添加到 pom.xml 中,我的 jose4j就可以顺利运行了:

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
</dependency>


<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.6.4</version>
</dependency>

记住在修改 pom.xml之后更新 Maven 项目。

(右键单击 Eclipse -> Maven -> Update Project 中的 Project 文件夹. .)

如果您面对的是 java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory

在项目的库文件夹中添加 slf4j-log4j12 jar

如果它不是 maven 项目,然后确保 Jar 文件在项目文件夹中。如果它是一个 maven 项目,然后确保 它在 pom.xml 中

我对动物园管理员的创业也有同样的问题。

# sh /opt/zookeeper-3.4.13-1.hardtop.0.9.1/bin/zkServer.sh start-foreground
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.13-1.hardtop.0.9.1/bin/../conf/zoo.cfg
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at org.apache.zookeeper.server.quorum.QuorumPeerMain.<clinit>(QuorumPeerMain.java:67)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
... 1 more

但是这个类已经作为其他 slf4j 罐子的一部分存在了:

# grep LoggerFactory lib/*jar
Binary file lib/log4j-1.2-api-2.17.1.jar matches
Binary file lib/log4j-slf4j-impl-2.17.1.jar matches
Binary file lib/netty-all-4.1.30.Final.jar matches