【发布时间】:2020-05-29 09:51:28
【问题描述】:
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 新手,如果这是一个非常简单的错误,我很抱歉。
提前感谢您的任何回复/反馈。
【问题讨论】:
-
在 Java 中,类库(jar)通常放在库路径中,例如
lib并在那里引用。但它们也需要导出到您最终部署的 jar 中。如果您使用 IDE(如 eclipse、intelliJ 或 netbeans),那么您可以在相应的 UI 中执行此操作。因此,将库添加到构建路径只会告诉 IDE 库在哪里,但是一旦部署它,您的程序也需要知道。所以你的部署路径中需要有一个 lib 文件夹(或者你必须将 jar 重新部署到你自己的 jar 中,如果你导出它)。你有机会使用 eclipse 吗? -
@TreffnonX 我在项目的 lib 目录中引用了该库。部署部分看不懂?
-
当您将项目“导出”到可运行的
jar时,您必须选中一个复选框,该复选框决定将 apache commons 放入导出的 jar 中。或者,您可以使用其他重新部署方式之一。否则,您正在运行的程序将找不到该库。您的 IDE 知道它在哪里,但您的 jar 不包含它...也可能是您忘记重建项目,但我假设您有某种自动构建活动。
标签: java eclipse oop import classnotfoundexception