import java.util.Arrays;
import org.apache.commons.lang3.ArrayUtils;
public class MonsterGame {
public static void main(String[] args)
{
Monster.buildBattleBoard();
char[][] tempBattleBoard = new char[10][10];
// ObjectName[] ArrayName = new ObjectName[4];
Monster[] Monsters = new Monster[4];
// Monster(int health, int attack, int movement, String name)
Monsters[0] = new Monster(1000, 20, 1, "Frank");
Monsters[1] = new Monster(500, 40, 2, "Drac");
Monsters[2] = new Monster(1000, 20, 1, "Paul");
Monsters[3] = new Monster(1000, 20, 1, "George");
Monster.redrawBoard();
for (Monster m : Monsters) {
if(m.getAlive()) {
int arrayItemIndex = ArrayUtils.indexOf(Monsters, m);
m.moveMonster(Monsters, arrayItemIndex);
}
}
Monster.redrawBoard();
}
}
[尝试运行此代码时,出现此错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang3/ArrayUtils
at MonsterGame.main(MonsterGame.java:55)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang3.ArrayUtils
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 1 more
我在同一个程序包中有两个文件。我之所以只显示了一个,是因为我不相信另一个文件是问题所在。我遵循了有关如何使用Java库的教程:下载,导入,构建路径等。
这里的问题是,导入似乎很好,但实际上使用库是问题。
我对Java还是很陌生,如果这是一个非常简单的错误修复,对不起。
谢谢您的任何回应/反馈。
您正在使用的引用库(Apache通用lang3)和用于此问题的任何其他库都以三种不同方式使用。
前两个通常被视为一个,因为通常都将二者视为“编译时间”,尽管严格来讲实际上只有第二个是。这意味着您需要为IDE(针对点1和2)和程序(针对点3)准备好相应的库。引发您的异常,因为在运行时,ClassLoader找不到您的库。 ClassLoader是JVM为其使用的程序加载类的方式。如果JVM找不到类,则它无法继续执行您正在运行的线程,并且您可能只在运行一个线程(一个主线程)。
因此您的程序中断,并停止运行。请重新检查您正在使用的有关如何正确导入库的教程,或将库导出到要导出的jar旁边的lib
文件夹中。
编辑:使用最新版本的eclipse并将项目导出为可运行jar时,系统会询问您要使用哪种方式处理库:
如果未在导出对话框中看到此小节,则说明您做错了(可能不是作为可运行的jar导出)。