0

我刚刚在搜索一些机器人类示例时下载了一个 java 程序TableDrivenVaccumAgent.java,我已经在路径中包含了必要的 jar,C:\Program Files\Java\jdk1.7.0_25\jre\lib\ext但是在它成功编译后我得到了错误。

我应该做些什么来解决以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: TableDrivenVacuumAgent (wrong name: aima/core/environment/vacuum/TableDrivenVacuumAgent)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

现在错误是:

Exception in thread "main" java.lang.NoClassDefFoundError: TableDrivenVaccumAgent (wrong name: aima/core/environment/vacuum/TableDrivenVaccumAgent)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
4

2 回答 2

1

当 Java 虚拟机无法在运行时找到在编译期间可用的特定类时,Java 中的 NoClassDefFoundError 就会出现。例如,如果我们有一个类的方法调用或访问一个类的任何静态成员,并且该类在运行时不可用,那么 JVM 将抛出 NoClassDefFoundError。

NoClassDefFoundError 的明显原因是特定类在 Classpath 中不可用,因此我们需要将其添加到 Classpath 中,或者如果我们期望它在 Classpath 中不可用,我们需要检查它为什么不可用。可能有多种原因,例如:

  1. 类在 Java 类路径中不可用。

  2. 您可能正在使用 jar 命令运行程序,并且清单文件的 ClassPath 属性中未定义类。

  3. 任何启动脚本都会覆盖 Classpath 环境变量。

于 2013-07-22T16:14:52.693 回答
1

当 Java 虚拟机无法在运行时找到在编译期间可用的特定类时,Java 中的 NoClassDefFoundError 就会出现。例如,如果我们有一个类的方法调用或访问一个类的任何静态成员,并且该类在运行时不可用,那么 JVM 将抛出 NoClassDefFoundError。

于 2013-07-23T19:12:36.163 回答