首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Exception >

java.lang.NoClassDefFoundError解决方法!

2014-01-26 
编译的时候是好的 运行时候出了问题.我狠查看了classpath,不可能是classpath的错误 Exception in thread m

编译的时候是好的
运行时候出了问题.我狠查看了classpath,不可能是classpath的错误

Exception in thread "main " java.lang.NoClassDefFoundError:Music (wrong name:c07/music/Music)

------解决方法--------------------------------------------------------
java c07.music.Music
------解决方法--------------------------------------------------------
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 "即可。
 

        

热点排行