我在使用Spring配置slf4j时遇到麻烦。我正在使用maven,并且可以打包.jar,但是当我运行它时,它给出以下异常:
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at logger.Log.<clinit>(Log.java:8)
at app.App.main(App.java:29)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
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)
... 2 more
这是我使用slf4j的方法:
public class Log implements ILog {
private static final Logger LOGGER = LoggerFactory.getLogger(Log.class);
@Override
public void reportMessage(String message) {
LOGGER.info(message);
}
@Override
public void reportWarningMessage(String message) {
LOGGER.warn(message);
}
@Override
public void reportErrorMessage(String message) {
LOGGER.error(message);
}
}
这是pom.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>pt.isel.ps</groupId>
<artifactId>neat</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.5.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.19</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>1.7.19</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.3.0.RELEASE</version>
<configuration>
<mainClass>app.App</mainClass>
<layout>ZIP</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
如果有人能帮助我,我将非常感激。
最佳答案
显然,在您的类路径下找不到org.slf4j.LoggerFactory
类。
尝试再次从命令行和项目文件夹中提取依赖项:dependency:copy-dependencies
尝试通过刷新项目和/或通过更新依赖项通过m2e eclipse插件来同步eclipse IDE。
在命令行上以及从项目文件夹中,尝试使用以下命令再次编译:mvn clean compile
如果那不起作用,请在项目中的Maven依赖项下查找unfound类(您应该可以找到)。
确保您的Maven依赖项是构建配置的一部分。
尝试再次编译:mvn clean compile
如果您在本地Maven存储库中具有请求的依赖项,并且该依赖项已包含在您的项目中,并且您的构建配置中包含要包含在输出类路径文件夹中的Maven依赖项,然后它应该工作。