被 classpath 和 package 搅昏了头 @_@
一个很简单的程序:
------------------------------------
package c05.dessert;
public class Cookie {
public Cookie() {
System.out.println("Cookie constructor");
}
public static void main(String[] args) {
System.out.println("Hello Cookie");
Cookie ck = new Cookie();
}
}
------------------------------------
文件 Cookie.java 位于 E:\Test\TIJ\c05\dessert 目录下面,在 Dos 下进入到这个目录,然后 javac Cookie.java 通过,但是执行 java Cookie 却出错了:
------------------------------------
java.lang.NoClassDefFoundError: Cookie (wrong name: c05/dessert/Cookie)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:537)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
Exception in thread "main"
------------------------------------
如果运行 java -classpath E:\Test\TIJ Cookie 的话,错误信息变为
Exception in thread "main" java.lang.NoClassDefFoundError: Cookie
我在 Windows 下的用户变量处设置了 CLASSPATH=.;E:\Test\TIJ;C:\j2sdk1.4.2_03\lib\tools.jar;C:\j2sdk1.4.2_03\lib\dt.jar