jdk8.0 Incompatible magic value 0 in class file 魔术字0报错

img

magic为0报错 把class文件删了重新弄过来也不行 有其他方法解决吗
粘贴复制class文件的方法接别答了

User类的代码能不能贴一下

报错的提示MyClassLoader2,你把这个类的代码也贴出来才好排查。

jdk版本问题,貌似是你运行的JDK版本和class的JDK版本不一致,
检查一下你的JDK版本

解决问题很简单,你只需要把Class.forName方法后面两个参数去掉即可,用jdk自带的类加载器加载User类。

出现的原因是在类加载子系统中,有一步是对class的校验,也就是魔术cafebaby,校验是否是jdk符合规范的字节码,因为你用了自定义的类加载器,导致这里校验失败,所以报了这个错

补充一下,出于你的代码来看,意图是学习类加载子系统以及反射操作。犹豫你没有把自己写的类加载器代码提供出来,我相信你想要的答案是利用自定义的classloader2来加载然后再利用反射设置user name值对吧。如果你想让别人帮助你,建议你还是补上完整的classloader2和user代码,这样有助于帮助你解决问题