IDEA里运行代码没问题but生成jar运行报java.lang.NoClassDefFoundError错误

问题描述

在IDEA中运行程序成功,但是通过maven的打包package生成jar包后调用报错如下:

1
2
3
4
5
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

搜索一圈发现是依赖的jar包没有打进去。

问题排查

1.首先排除没有添加依赖(检查pom.xml文件)是否有依赖缺失

如果是没有添加依赖IDEA里面运行程序都会跑不成功。如下图依赖没缺失

2.检查IDEA中Artfacts中的依赖

在Artfacts中发现没有依赖的slf4j

问题解决

Artfacts中添加依赖

在Project structure中选择左侧Artifacts,点击“+”号,弹出窗口中选择JAR–>From modules with dependencies。

配置包含main函数类和生成jar包的MF目录,配置完点击OK按钮就行。注意:MF文件目录不要用默认目录,使用默认,我的生成jar就出错了,无法运行。

配置完后点击“OK按钮”确认。

配置完毕后,需要编译,编译步骤如下图:

最后就可以到jar生成目录看到所生成的jar包了

生成的可执行jar在输出目录里。使用:java -jar *.jar命令执行jar包程序。


觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭



wechat pay



alipay

IDEA里运行代码没问题but生成jar运行报java.lang.NoClassDefFoundError错误
http://yuting0907.github.io/2022/09/22/IDEA里运行代码没问题but生成jar运行报java-lang-NoClassDefFoundError错误/
作者
Echo Yu
发布于
2022年9月22日
许可协议