java.lang.NoClassDefFoundError 报错处理

mac2025-04-06  10

问题场景描述

        模块A依赖了jar包B,使用命令mvn install 或者mvn clean package 进行编译以及启动应用都是没有问题的,但是在swagger中测试某个接口时A中调用了B中的某个类,会报错java.lang.NoClassDefFoundError。

        报错根信息如下:

    Caused by: java.lang.ClassNotFoundException: com.*.http.RestClient     at java.net.URLClassLoader.findClass(URLClassLoader.java:382)     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)     ... 6 common frames omitted

原因追溯

          相关资料 https://blog.csdn.net/u013452335/article/details/84102972。

           RestClient类的ClassNotFoundException 异常引发NoClassDefFoundError错误。经排查该类已经被编译,是类加载器没有加载到,再查是maven中B包的依赖<scope>属性配置为provided了,导致A找不到RestClient类的class文件。

解决

           将<scope>在不影响现有代码的情况下注释掉。

 

扩展

           maven <dependency>的<scope>属性值都有什么区别https://blog.csdn.net/mrzhangbaby/article/details/97129177。

 

 

   

最新回复(0)