Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java公共图书馆Lang3';ClassNotFoundException';错误_Java_Eclipse_Oop_Import_Classnotfoundexception - Fatal编程技术网

Java公共图书馆Lang3';ClassNotFoundException';错误

Java公共图书馆Lang3';ClassNotFoundException';错误,java,eclipse,oop,import,classnotfoundexception,Java,Eclipse,Oop,Import,Classnotfoundexception,尝试运行此代码时,我遇到以下错误: 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]

尝试运行此代码时,我遇到以下错误:

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();


}
}
我有两个文件,在同一个包里。我只展示了这一个,因为我认为另一个文件不是问题所在。 我学习了关于如何使用java库的教程:下载、导入、构建路径等

这里的问题是,导入似乎很好,但实际使用库才是问题所在

我对Java非常陌生,如果这是一个非常简单的错误需要修复,那么很抱歉


感谢您提前提供任何回复/反馈。

您正在使用的参考库(apache common lang3)和任何其他库有三种不同的使用方式

  • 首先,在开发过程中需要库,这样IDE就可以 在从调用类、对象和方法时验证代码 图书馆
  • 在编译过程中,您需要库,因此java 编译器可以引用正确的路径,并优化代码, 如果可能的话
  • 当Java虚拟机运行您的程序时,您需要在运行时使用该库,以便它可以从库中找到您使用的任何内容
  • 前两个通常被视为一个,因为它们通常被认为是“编译时”,尽管严格来说只有第二个才是真正的编译时。这意味着您需要为IDE(第1点和第2点)和程序(第3点)准备好库。会引发异常,因为在运行时,类加载器找不到库。类加载器是JVM为其使用的程序加载类的方式。如果JVM找不到类,它将无法继续执行您正在运行的线程,并且您可能只运行一个线程(一个主线程)

    因此,您的程序中断并停止运行。请重新检查您正在使用的关于如何正确导入库的教程,或者将库导出到您正在导出的jar旁边的
    lib
    文件夹中

    编辑:当使用最新版本的eclipse并将项目导出为可运行jar时,系统会询问您希望以何种方式处理库:


    如果您没有看到export对话框的这一小节,则表明您做了错误的事情(可能您没有将其导出为runnable jar)。

    您正在使用的引用库(apache common lang3)和任何其他库以三种不同的方式使用

  • 首先,在开发过程中需要库,这样IDE就可以 在从调用类、对象和方法时验证代码 图书馆
  • 在编译过程中,您需要库,因此java 编译器可以引用正确的路径,并优化代码, 如果可能的话
  • 当Java虚拟机运行您的程序时,您需要在运行时使用该库,以便它可以从库中找到您使用的任何内容
  • 前两个通常被视为一个,因为它们通常被认为是“编译时”,尽管严格来说只有第二个才是真正的编译时。这意味着您需要为IDE(第1点和第2点)和程序(第3点)准备好库。会引发异常,因为在运行时,类加载器找不到库。类加载器是JVM为其使用的程序加载类的方式。如果JVM找不到类,它将无法继续执行您正在运行的线程,并且您可能只运行一个线程(一个主线程)

    因此,您的程序中断并停止运行。请重新检查您正在使用的关于如何正确导入库的教程,或者将库导出到您正在导出的jar旁边的
    lib
    文件夹中

    编辑:当使用最新版本的eclipse并将项目导出为可运行jar时,系统会询问您希望以何种方式处理库:


    如果您没有看到export对话框的这一小节,则表明您做了错误的事情(可能您没有作为runnable jar导出)。

    在Java中,类库(jar)通常放在库路径中,例如
    lib
    ,并在那里引用。但它们也需要导出到最终部署的jar中。如果使用IDE(如eclipse、intelliJ或netbeans),则可以在相应的UI中执行此操作。因此,将库添加到构建路径只会告诉IDE库的位置,但是一旦部署了库,程序也需要知道库的位置。因此,在您的部署路径中需要有一个lib文件夹(或者,如果导出jar,您必须将其重新部署到您自己的jar中)。您是否有机会使用eclipse?@TreffnonX我在项目的lib目录中引用了该库。我不理解部署部分?当您将项目“导出”到可运行的
    jar
    时,必须选中一个复选框,该复选框决定将apache commons放入导出的jar中。或者,您可以使用其他重新部署方式之一。否则,正在运行的程序将找不到库。您的IDE知道它在哪里,但您的jar不包含它。。。也可能是您忘记重建项目,但我假设您有某种自动构建活动。在Java中,类库(JAR)通常放在库路径中,例如
    lib
    ,并在其中引用。但它们也需要导出到最终部署的jar中。如果使用IDE(如eclipse、intelliJ或netbeans),则可以在相应的UI中执行此操作。因此,将库添加到构建路径只会告诉IDE库的位置,但是一旦部署了库,程序也需要知道库的位置。因此,在您的部署路径中需要有一个lib文件夹(或者,如果导出jar,您必须将其重新部署到您自己的jar中)。您是否有机会使用eclipse?@TreffnonX我在项目的lib目录中引用了该库。我不理解部署部分?当您将项目“导出”到可运行的
    jar
    时,必须选中一个复选框,该复选框决定将apache commons放入导出的jar中。或者,您可以使用以下选项之一:
    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