提供的 .class 文件中的 NoClassDefFoundException

NoClassDefFoundException in a provided .class file

我正在尝试使用为学校作业提供给我的一些文件在 Eclipse 中构建一个项目(我在到期前有足够的时间)。我 运行 遇到了一个奇怪的问题,但我还没有找到答案。该项目是两个 AI 玩家之间进行的游戏。弓箭手被敌人控制。 archer 的代码以 .class 文件的形式出现,我没有任何其他源代码。在弓箭手尝试移动之前一切似乎都正常,然后发生了这种情况:

Exception in thread "Thread-5" java.lang.NoClassDefFoundError: ArcherAgent
at ArcherAgent.isFourDir(ArcherAgent.java:332)
at ArcherAgent.bestToMove(ArcherAgent.java:246)
at ArcherAgent.makeDecision(ArcherAgent.java:218)
at ArcherAgent.middleStep(ArcherAgent.java:150)
at edu.cwru.sepia.agent.ThreadIntermediary.run(ThreadIntermediary.java:140)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: ArcherAgent

$1 向我表明它正在寻找内部 class。我试过将文件放在不同的位置都无济于事,而且当我注意到 $1.还有其他方法可以解决这个问题吗?我不完全确定如何处理它似乎缺少内部 class 的事实,我现在一直在搜索,但我认为我还没有找到任何东西。

抱歉给您带来麻烦。

你说得对,缺少的 class 是一个内部 class。这个 class 在编译器生成的另一个文件中。当你没有这样命名的文件时,它丢失了,所以你必须获取外部 class 的源代码或在其他地方找到丢失的编译内部 class。

查看 ArcherAgent class 的导入块。我确定您错过了一些使用 ArcherAgent class 的库。 NoClassDefFoundError 表示导入块中的 classes 不在 classpath 中。