我在编译JAVA编程思想课本中的例子时发现一个问题,书中有一个程序位于
d:\launcelot\c07\music4\Music4.java
--------------------------------------------------------------------
package c07.music4;
import java.util.*;
import c07.music.*;文件开头引入了d:\launcelot\c07\music\Note.java
--------------------------------------------------------------------
Note.java中开头的package是这样写的package c07.music;--------------------------------------------------------------------编译的时候如果去掉两个文件中的package c07.music4 和package c07.music
两行语句一切正常如果不去掉运行java Music4时就会出现
Exception in thread "main" java.lang.NoClassDefFoundError:Music4 (wrong name: c07/music4/Music4)
的提示,这是为什么?还有,就算去掉了两个package语句,如果把Music4.java中import c07.music.*;
改成import c07.music.Note;编译时就直接告诉我找不到Note类????我的环境变量配置是这样的
CLASSPATH = .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;d:\launcelotjava
JAVA_HOME = d:\jdk5
PATH = d:\jdk5\bin

解决方案 »

  1.   

    两个package语句?服了U.
    带package的时候,编译和运行都要含表达package的部分.
    javac c07/music4/Music4.java
    java c07.music4.Music4
      

  2.   

    import c07.music.*;这样不就全包进去了吗?
      

  3.   

    在使用java命令运行程序时,必须输入类的权限定名,也就是
    java c07.music04.Music4
      

  4.   

    两个package语句?服了U.
    带package的时候,编译和运行都要含表达package的部分.
    javac c07/music4/Music4.java
    java c07.music4.Music4
    ----------------
    楼主是两个文件两个package,楼上的看错了吧,
    另外,编译的时候package无所谓的,但是运行的时候就一定要package
      

  5.   

    java Music4 不对应该改为包全名:java c07.music4.Music4
      

  6.   

    要是当前目录已经在music4了呢?直接java Music4不行吗?