类加载器在加载一个类但不加载其他类时抛出 ClassDefNotFoundError.该特定类有什么问题?



我已经四处打听了大半个月,我只是找不到解决方案。

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

从本质上讲,我正在尝试为我的一个项目创建一个插件加载器(https://github.com/CloudGamer360/Project-ArchT5 - 有关最新代码,请参阅"开发"分支),因此net.cloudsbots.archseriest.archt5.plugin.PluginManager类应该是那里唯一重要的东西。我制作了一个插件,过去加载得很好,没有错误,所以我觉得我的插件加载器很好,但我不知道,可能是我错过了一些东西,因为工作的插件要小得多,也不那么复杂。

无论如何,我认为问题出在大量失败的修复之后,我不知道插件本身。它名为ArcadeT5,是我的ArchT5项目的游戏"引擎"插件,旨在使机器人的游戏开发更容易。(https://github.com/CloudGamer360/ArcadeT5 在这里找到)我得到了一些要加载的类,遍历 jar 文件,直到它加载 net.cloudsbots.arcadet5.games.Game 类,其中它在defineclass()调用时在PluginManager中抛出ClassDefNotFound异常(关于开发的第 177 行)

日志截图:

  • https://i.stack.imgur.com/siXlo.png
  • https://i.stack.imgur.com/ZIdUU.png

在注意到加载器的某些东西后自己想通了。看起来,如果一个类继承了另一个尚未加载的类,它将抛出一个NoClassDefFoundError

如果您正在创建一个调用"defineClass"等方法的自定义类加载器,请确保捕获任何NoClassDefFoundError异常并加载所需的类,因为这将为您省去一些麻烦。

最新更新