java.lang.noclassdeffounderror: l_java.lang.NoClassDefFoundError的解决

前言

写了一个java程序,初期运行正常,在一次功能新增的时候,出现异常,百思不得其解。最终解决后,记录下。

环境

我的程序是jar运行的。

开发工具是 idea

开发环境 mac

运行环境 centos7

问题

运行程序

java -jar wwf.jar

异常如下:

Exception in thread "main" java.lang.NoClassDefFoundError: com/alibaba/fastjson/JSON

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:335)

at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

过程

一开始以为 fastjson-1.2.7.jar 还依赖其他的包。检查了一遍,中间还替换了其他的json包方案。依旧无法解决

判断fastjson-1.2.7.jar包没加载。检查pom.xml 和检查运行的文件夹

发现fastjson-1.2.7.jar均存在。

尝试拷贝fastjson-1.2.7.jar 到java环境变量的classpath目录下。尝试解决。依旧不行。

尝试 java -Djava.ext.dirs=xxx路径 wwf.jar 可以运行。但是存在瑕疵。xxx路径中jar包如果有main方法会被优先执行。

最后的解决方法。修改 MANIFEST.MF 文件Class-Path 追加上 fastjson-1.2.7.jar

问题的根本原因是

MANIFEST.MF 是第一次项目创建时候设置的。后期如果引入新的依赖包,需要手动修改,

idea工具无法自动修改。

这个问题也反应自己对程序执行的基本流程不熟悉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值