我的代码中出现了NoSuchFieldError,现在oracle不太清楚为什么抛出此错误,只是说:如果类的定义发生了不兼容的更改,则此错误只能在运行时发生。
有人可以向我解释一个人如何“不兼容地”改变一堂课吗?我正在谈论的课程扩展了很多课程,因此我怀疑这可能与该课程有关,但是我不知道从哪里开始寻找或寻找什么。
如果仅部分重新编译代码,通常会引发此错误。您有旧代码引用了在重新编译的类文件中不再存在的字段。
解决方案是清除所有类文件并重新编译所有内容。
更新:如果重新编译所有内容后仍然出现相同的错误,则可能是针对外部库的一个版本进行编译,而在运行时使用了另一个版本。
您现在需要做的是首先确定导致问题的类(看起来您已经完成了此工作),然后使用-verbose:class
命令行选项运行您的应用程序。它将在您的标准中转出很多类加载信息,您将能够找到问题类的确切位置。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句