编译的时候是好的
运行时候出了问题.我狠查看了classpath,不可能是classpath的错误Exception in thread "main" java.lang.NoClassDefFoundError:Music (wrong name:c07/music/Music)

解决方案 »

  1.   

    运行时带包名的命令怎么写
    包名是 c07.music.*; 文件是music.java
      

  2.   

    java文件名和类名应该一样 比如Music.java,这个文件里的类名为Music
      

  3.   

    用javac在dos下看行不 
      

  4.   

    你怎么敢说不是路径的错误呢?你把当前路径加到classspath中了没有?
      

  5.   

    问题已经解决了java c07.music.Music
    但是我弄不清楚的是:为什么要这样?
    具体情况是Music.java文件中有句:package c07.music;
    这个文件在 E:\java\c07\music下面
    而我的classpath是E:\java为什么这种情况下运行程序要加包名??
      

  6.   

    更确切的说我的classpath应该是   .;C:\j2sdk1.4.2_14\lib\dt.jar;C:\j2sdk1.4.2_14\lib\tools.jar;E:\java
      

  7.   

    package语句:由于java编译器为每个类生成一个字节码文件,且文件名与类名相同,因此同名的类有可能发生冲突。为了解决这一问题,java提供包来管理类名空间,包实际提供了一种命名机制和可见性限制机制。而在java的系统类库中,把功能相似的类放到一个包(package)中,例如所有的图形界面的类都放在java.awt这个包中,与网络功能有关的类都放到java.net这个包中。用户自己编写的类(指.class文件)也应该按照功能放在由程序员自己命名的相应的包中,例如上例中的javawork.helloworld就是一个包。包在实际的实现过程中是与文件系统相对应的,例如javawork.helloworld所对应的目录是path\javawork\helloworld,而path是在编译该源程序时指定的。比如在命令行中编译上述HelloWorldApp.java文件时,可以在命令行中敲入"javac -d f:\javaproject HelloWorldApp.java",则编译生成的HelloWorldApp.class文件将放在目录f:\javaproject\javawork\helloworld\目录下面,此时f:\javaprojcet相当于path。但是如果在编译时不指定path,则生成的.class文件将放在编译时命令行所在的当前目录下面。比如在命令行目录f:\javaproject下敲入编译命令"javac HelloWorldApp.java",则生成的HelloWorldApp.class文件将放在目录f:\Javaproject下面,此时的package语句相当于没起作用。  但是,如果程序中包含了package语句,则在运行时就必须包含包名。例如,HelloWorldApp.java程序的第一行语句是:package p1.p2;编译的时候在命令行下输入"javac -d path HelloWorldApp.Java",则HelloWorldApp.class将放在目录path\p1\p2的下面,这时候运行该程序时有两种方式:
      第一种:在命令行下的path目录下输入字符"Java p1.p2.HelloWorldApp"。
      第二种:在环境变量classpath中加入目录path,则运行时在任何目录下输入"Java p1.p2.HelloWorldApp"即可。
      

  8.   

    楼上的复制粘贴了那么多,就一句中听如果程序中包含了package语句,则在运行时就必须包含包名呵呵.玩笑的,还是谢谢楼上的各位.我可以结帖了