SpringBoot之java.lang.NoClassDefFoundError

寵の児 提交于 2020-01-07 15:18:15

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

一、预备

首先确认你的确有下载到依赖,不然的话这个问题很明确就是要你去找到正确的依赖

我项目的pom文件明明就依赖了这个类所在的文件了,为什么还报类未定义异常呢?而且在idea下查找类也能明确看到类也在maven的外部依赖中看到了,如下以下面的异常为例,看到的确在maven中找到了。执行run Application确还是报错。

Exception in thread "main" java.lang.NoClassDefFoundError: org/glassfish/hk2/utilities/reflection/ReflectionHelper

二、定位问题

经过如上确认后,可以想到应该是配置出了问题了

可以看到这个启动类依赖的classpath是模块的类路径,并且启动的是Application并不是Maven应用,看这个模块的报类未定义的错引入类是hk2-utils是provided的,

再看启动打印的启动信息如下:

C:\Java\jdk1.8.0_101\bin\java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:49736,suspend=y,server=n -classpath C:\Users\cqq\AppData\Local\Temp\classpath.jar -Dfile.encoding=UTF-8 com.xxx.BootstrapApp

查看这个文件中的MANIFEST.MF,并找不到这个类,所以启动就会报NoClassDefFoundError

找到原因就可以下一步操作了

三、解决问题

1.可以修改.iml文件的provided

2.修改项目启动方式为maven启动

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!