在调试我们的产品时,我已经找到了NoClassDefFoundError,这对我来说很奇怪 - 我注意到类加载日志的输出(通过打开-verbose:class):
[Loaded com.xxx.yyy.preferences.PreferencesMgr from file:/C:/Users/xxx/.gradle/caches/zzz.jar
PreferencesMgr 只是导致NoClassDefFoundError的类:
java.lang.NoClassDefFoundError: Could not initialize class com.xxx.yyy.preferences.PreferencesMgr
所以似乎jvm实际上已经成功加载了这个类。那为什么会有NoClassDefFoundError?有什么可能性?
答案 0 :(得分:0)
可能是依赖问题,另一个包也可能定义一个导致冲突的PreferenceMgr类。使用Gradle,您可以使用一些命令来检查依赖项:Check this post
答案 1 :(得分:0)
现在情况很清楚。 PreferenceMgr 依赖于另一个在某些版本中有bug的jar。在gradle中,我们设置了jar的bug版本。因此,在加载PreferenceMgr时,类加载器会对MAUtils中的错误进行分类并导致 NoClassDefFoundError 。