0

我在包含此代码的List.java文件夹中创建了一个文件UtilityPack

package Utilities;
public class List
{
    private class node{}
    public void insert(int data){}
    public void print(){}
    public static void main(String[] s){}
}

编译我做了

C:\UtilityPack>javac List.java

但是当我尝试运行时

C:\UtilityPack>java -classpath . List

或者

C:\UtilityPack>java List

我收到错误

Exception in thread "main" java.lang.NoClassDefFoundError: List (wrong name: Uti
lities/List)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14
2)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

我一直在尝试从过去 3 个小时开始执行此程序,但没有任何效果..请帮助

4

3 回答 3

4

您需要完全限定的名称,例如

java -cp . Utilities.List

即,您告诉 JVM 从当前的直接 ( -cp .) 中查找一个类Utilities.List,它会在文件中找到该类Utilities\List.class

为了更加一致,您应该将 .java 文件放在一个Utilities目录下(是的 - 这是重复的 - 包指定了这一点,但它是一致的做法)。

我也会避免打电话给你的班级List。在某个阶段,您要导入 a java.util.List,这一切都会变得非常混乱!

最后,一旦你获得了两个以上的类,就研究ant或其他构建工具,并将你的sourcetarget目录分开。

于 2013-01-08T17:51:02.383 回答
0

使用类的完整名称来启动您的程序:

 java Utilities.List

但文件夹名称也应与包名称匹配。

于 2013-01-08T17:49:38.853 回答
0

您的目录结构需要遵循您的 Java 包路径。IOW,如果该类List在包中Utilities,则需要将其放在名为 Utilities 的目录中,该目录应位于项目的根级别,即源文件的路径应为C:\UtilityPack\Utilities\List。爪哇_ 当您在C:\UtilityPack(项目根目录)中时,您可以List通过将其引用为Utilities.List.

您也可以考虑使用 Eclipse,它会阻止此类事情的发生,或者任何其他 Java IDE。

于 2013-01-08T17:55:45.727 回答