【推荐】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启动
来源:oschina
链接:https://my.oschina.net/u/1271447/blog/3005840