如何修复NoClassDefFoundError:intelliJ中的org.slf4j.LoggerFactory(但是Eclipse可以正常工作)

时间:2019-05-12 17:49:51

标签: java eclipse intellij-idea slf4j

Eclipse可以很好地运行我的代码(右键单击-> run),但是当我尝试在intellij中运行相同的确切项目和主要方法时,却出现此错误。有没有办法查看eclipse从哪里获取依赖项并复制添加到Intellij中的依赖项?

我尝试将API从提供的切换到运行时。...然后我遇到了另一个问题-无法找到正确的LoggerFactory类型。但是eclipse却发现依赖关系很好。

这些在我的pom层次结构中:

<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-slf4j-impl</artifactId>
  <version>2.11.1</version>
</dependency>

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

    Exception in thread "main" java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory
at com.railroad.messaging.consoleapp.PumpEmpMessagetoQpid.<clinit>(PumpEmpMessagetoQpid.java:16)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.net.URLClassLoader.findClass(URLClassLoader.java:609)
at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:926)
at java.lang.ClassLoader.loadClass(ClassLoader.java:871)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:343)
at java.lang.ClassLoader.loadClass(ClassLoader.java:854)
... 1 more

1 个答案:

答案 0 :(得分:0)

检查您的父项目pom.xml。可能是您需要删除slf4j依赖关系块(在PARENT项目中)“提供”的作用域。

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

    <!-- DELETE THIS ROW: -->
    <scope>provided</scope>
</dependency>