使用Maven打包代码后运行报错:
Exception in thread "main" java.lang.NoClassDefFoundError: com/alibaba/fastjson/JSON
at cn.huberylee.App.main(App.java:28)
Caused by: java.lang.ClassNotFoundException: com.alibaba.fastjson.JSON
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
不打包直接运行是没有问题的,可能的原因是什么?新手,求指导!谢谢!
10条答案
按热度按时间bakd9h0s1#
打包的时候没有把fastjson打进去。看一下maven的作用域
e5nqia272#
直接使用的
这个作用域不对么?
v1uwarro3#
这样写没错,为了验证时不时包没有导进去。你可以看看打的包内部是不是有fastjson包 或者将fastjson包添加到运行环境的lib包内。如果能跑通那就是包的问题,如果还不同是不是可以考虑运行环境的问题。希望对你有帮助
ni65a41a4#
我也遇到类似问题.我是用idea maven打包jar, 后面用到fastjson才加上,但是maven工程没有自动把fastjson添加到classpath路径,需要手动加入就可以了,或者重新建一个jar就会把当前依赖加到classpath里头,
v1uwarro5#
遇到同样的问题,有什么解决方案么。现在只能手动把fastjson的jar包拷过来,运行的时候加到classpath里。
iq0todco6#
@charlessoft 这个方法有效
r8xiu3jd7#
会不会是pom.xml里, 配置着provided,这个删去也可。
7vux5j2d8#
老哥稳啊,解决了
8ehkhllq9#
打包的时候选择deploy,不要选择package
yquaqz1810#
直接把jar包放在类路径下吧,简单粗暴。