加载一个类而不加载其他类时,Classloader会引发ClassDefNotFoundError。该特定类别有什么问题?

时间:2019-04-26 14:17:52

标签: java classloader noclassdeffounderror classnotfoundexception

我已经四处询问,环顾一个月的大部分时间,但我找不到解决方法。

好的,所以我需要以前使用过Java类加载器的人的帮助。具体来说,是某个正在处理类问题的人在jar文件中,但是它抛出ClassDefNotFound异常。

基本上,我正在尝试为我的项目创建插件加载程序(https://github.com/CloudGamer360/Project-ArchT5-有关最新代码,请参见“开发”分支),因此net.cloudsbots.archseriest.archt5.plugin.PluginManager类应成为那里唯一重要的事情。我已经制作了一个过去可以正常加载且没有错误的插件,所以我觉得我的插件加载器还不错,但是我不知道,可能是我错过了一些东西的原因,因为可以正常工作的插件是< strong> 很多 ,体积小而复杂度低。

无论如何,我认为问题出在哪里,但是在大量失败的修复之后,我还是不知道插件本身。名为ArcadeT5,这是我的ArchT5项目的游戏“引擎”插件,旨在使该机器人的游戏开发更加轻松。 (在https://github.com/CloudGamer360/ArcadeT5处找到)我可以加载其中的一些类,遍历jar文件,直到加载net.cloudsbots.arcadet5.games.Game类为止,在该类中抛出{{1 }} ClassDefNotFound的调用中PluginManager的异常(关于开发的第177行)

日志截图:

1 个答案:

答案 0 :(得分:0)

在注意到加载程序后自己弄清楚了它。看来,如果一个类继承了另一个尚未加载的类,它将抛出一个NoClassDefFoundError

如果您要创建一个自定义类加载器,该类加载器将调用诸如'defineClass'之类的方法,请确保捕获任何NoClassDefFoundError异常并加载所需的类,这样可以为您省去一些麻烦。