项目启动报错,NoSuchMethod,NoSuchField,这个就是class加载过程出现了问题,需要加载类与jvm实际加载不通,机器不会骗人,下面给出我个人的排查思路。
以这个报错为例:java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
一个Class可能是在两个不同group的JAR中存在
mvn dependency:tree >dep.txt
这个在dep.txt中搜索persistence,检查是否有冲突,如果有exclusion
如果没有冲突,来继续排查,来看下面
https://www.findjar.com/index.x
再回到step 1,检查是不是引入来冲突的jar包。
感谢天感谢地,居然还没有冲突包,哈哈哈,好开心,学了好久的jvm终于可以用到了。来看下一步
项目启动的时候,增加 -XX:+TraceClassLoading,来看看类的加载顺序。
项目启动时候回打印类加载过程如下图
在加载过程中搜索报错的字段,这个肯定能找出来,你会发现同样的类存在不同的包中。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。