本地class目录:D:\JavaWorkSpace\MyClass\sample
path:Path=C:\j2sdk1.4.2_11\bin;***
CLASSPATH=.;D:\JavaWorkSpace
Hello.java代码:package MyClass.sample;public class Hello {
public static void main(String[] args) {
System.out.println("Hello, world");
}
}CMD下当前目录为:D:\JavaWorkSpace\MyClass\sample
javac Hello.java 编译通过
java Hello.java 报错
Exception in thread "main" java.lang.NoClassDefFoundError: Hello (wrong name: MyClass/sample/Hello)如果把代码里package MyClass.sample;去掉,就可以正常运行,不理解啊!
我是JAVA新手,有先辈帮下忙吧.

解决方案 »

  1.   

    因为他是放在包里面的,所以你的class文件就不在当前目录下了。
    java 报名.类名
      

  2.   

    本地class目录改为:D:\JavaWorkSpacecd D:\JavaWorkSpace
    javac -d . Hello.java 
    编译通过,并在D:\JavaWorkSpace下生成文件夹MyClass\sample其中包含编译生成的Hello.class
    java sample.Hello
    成功显示Hello, world上面的问题好象解决了,可是又有一个新问题.
    刚都是在class的当前目录下进行的,所以没问题了.
    可是,转到C的根目录下
    CLASSPATH=.;D:\JavaWorkSpace
    c:
    javac -d . Hello.java
    报错:error: cannot read: Hello.java
    1 error
    java sample.Hello
    成功显示Hello, world这是为什么? 如果java能正常运行的话,说明CLASSPATH设置没有问题,可是javac为什么别又识别不出来呢?疑惑啊!!!