美文网首页
java.lang.NoClassDefFoundError的解

java.lang.NoClassDefFoundError的解

作者: 有时右逝 | 来源:发表于2019-06-11 12:14 被阅读0次

    前言

    写了一个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工具无法自动修改。

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

    相关文章

      网友评论

          本文标题:java.lang.NoClassDefFoundError的解

          本文链接:https://www.haomeiwen.com/subject/hzvffctx.html