模块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。