72

在运行提要实用程序时,我收到了如下所述的错误。我正在尝试加载图像“ logo.png ”。slf4jjar 文件也可在运行时类路径中找到。但我仍然收到此错误。

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)
4

24 回答 24

39

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

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.26</version>
</dependency>
于 2014-09-02T10:23:53.207 回答
27

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

于 2012-10-17T04:00:58.950 回答
12

下载slf4j-1.7.5.zip

它包含不同的 jar 文件。

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

  1. slf4j-api-2.0.99
  2. slf4j-simple-1.6.99
  3. junit-3.8.1
于 2013-11-21T07:28:55.463 回答
8

右键单击项目属性并按照以下步骤“项目属性”->“部署程序集”,添加“Java 构建路径条目-> Maven 依赖项”

于 2015-09-17T08:51:03.973 回答
7

我尝试了其他解决方案,但异常并没有消失。所以我用 Java Decomplier 反编译了整个jose4j 0.6.5 jar文件并查看了它的 pom.xml。

我意识到它对slf4j-api, version 1.7.21有特定的依赖关系: 在此处输入图像描述

所以在我项目的 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.

(右键单击 Eclipse ->Maven->更新项目中的项目文件夹..)

于 2020-03-11T10:37:00.820 回答
4

我也有类似的问题。我有一个 Maven 项目,正在测试 rabbitmq。首先它向我显示了类似的错误,然后我在 maven 项目中添加了所有 SLF4J 依赖项,然后错误更改为“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> 

它终于奏效了。

于 2016-12-14T06:52:34.477 回答
4

我遇到了类似的问题,下面的行为我解决了这个问题。

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

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

于 2018-08-25T15:52:47.410 回答
2

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

  1. slf4j-api-1.7.2.jar
  2. slf4j-jdk14-1.7.2.jar
于 2018-07-25T07:20:42.517 回答
2

毫无疑问,完美的解决方案是将这些包添加到您的应用程序中:
https ://mvnrepository.com/artifact/org.slf4j/slf4j-api/1.7.2
http://archive.apache.org/dist/logging /log4j/1.2.16/

添加后,您可能会遇到以下警告,您可以忽略!

SLF4J:未找到 SLF4J 提供程序。SLF4J:默认为无操作 (NOP) 记录器实现 SLF4J:有关详细信息,请参阅http://www.slf4j.org/codes.html#noProviders

学分: https ://www.javacodegeeks.com/2018/02/fix-exception-thread-main-java-lang-noclassdeffounderror-org-slf4j-loggerfactory-java.html

于 2020-06-09T19:20:25.050 回答
2

您可以使用波纹管依赖

<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>
于 2018-06-25T16:42:39.000 回答
1

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

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

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

于 2014-08-05T05:08:19.750 回答
1

当我们使用 slf4j api jar 时,我们需要任何像 log4j 这样的记录器实现。在我的系统上,我们有完整的设置,它工作正常。

1. slf4j-api-1.5.6.jar
2. slf4j-log4j12-1.5.6.jar
3. **log4j-1.2.15.jar**
于 2014-11-01T07:46:46.147 回答
1

更具体地说,如果您缺少com.vaadin.external.org.slf4j.LoggerFactory类,请添加以下依赖项。

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

如果您缺少任何其他org.slf4j.LoggerFactory,只需转到Maven 中央类名搜索并搜索确切的类名以确定您缺少的确切依赖项。

于 2016-05-29T08:36:39.493 回答
1

我相信 slf4j 网站上概述了答案(Failed to load class org.slf4j.impl.StaticLoggerBinder

对于一个非常快速的解决方案,我建议添加无操作 (NOP) 记录器实现 (slf4j-nop.jar)

例如,如果使用 Maven:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-nop</artifactId>
    <version>${slf4j-nop-version}</version>
</dependency>
于 2019-12-02T16:44:49.513 回答
0

确保您的MANIFEST.MF包含我的应用程序中引用的 jar 的名称是slf4j-api-*。罐子

于 2014-05-22T12:14:56.357 回答
0

你需要 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

教程的所有代码都可用

于 2014-09-09T21:00:04.893 回答
0

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

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

slf4j-log4j12-1.6.1.jar slf4j-api-1.6.1.jar

这些 jars 也将取决于您正在运行的 cassandra 版本。您使用的 cassandra 版本、jar 版本和 jdk 版本存在依赖关系。

您可以使用:jdk1.6 和:cassandra 1.1.12 和上述罐子。

于 2013-12-26T15:09:29.117 回答
0

这对我有用 /properties/maven 取消选中解决来自工作区项目的依赖项。

于 2018-11-09T19:33:05.090 回答
0

当您从 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>

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

于 2018-04-17T12:55:09.290 回答
0

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

于 2017-01-09T10:54:07.587 回答
0

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

于 2019-11-29T15:27:14.527 回答
0

你需要 slf4j-api 库和 slf4j-log4j12-1.7.25 jar。将此jar复制到您的项目-> WEBINF-> lib文件夹和tomcat服务器lib文件夹中以成功执行。

于 2018-01-16T14:49:03.830 回答
-1

如果您面临 java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory

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

于 2020-12-31T10:55:18.667 回答
-3

LoggerFactory 类正在根据错误消息进行调整:

java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory

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

于 2012-10-17T04:12:27.623 回答