java maven项目 打包后 运行jar包 Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory,怎么回事
时间: 2023-07-24 16:35:02 浏览: 303
java.lang.NoClassDefFoundError:
出现 `java.lang.NoClassDefFoundError` 异常通常是因为运行时找不到所需要的类,这里的异常信息显示找不到 `org.slf4j.LoggerFactory` 类。这是因为在你的项目中使用了 SLF4J 日志框架,但是在运行时,所需要的 SLF4J 相关的 jar 包没有被正确地加载。
解决这个问题的方法是在运行 jar 包时将所需要的 jar 包一并加载进来。你可以通过以下命令来运行 jar 包:
```bash
java -cp your-jar-file.jar:slf4j-api.jar:slf4j-simple.jar com.example.MainClass
```
这个命令中,`your-jar-file.jar` 是你打包后的 jar 包文件名,`slf4j-api.jar` 和 `slf4j-simple.jar` 是 SLF4J 相关的 jar 包,`com.example.MainClass` 是你的主类名。其中,多个 jar 包之间使用冒号 `:` 分隔。
如果你不想每次运行都输入这么长的命令,可以将它们写在一个 shell 脚本或者批处理文件中。另外,你也可以考虑使用 Maven 插件,如 `maven-assembly-plugin` 或者 `maven-shade-plugin`,将所需的 jar 包打包到一个大的 jar 包中,这样在运行时就不需要手动指定依赖了。
阅读全文