在看<Thinking in the Java>,测试它的sample 程序,发现只要有package语法的,编译都能通过,就是执行的时候会发如下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: Music (wrong name: polymorphism/music/Music)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: Music. Program will exit.
在网上查了一下,并且经过我的测试验证,原因是我是在当前程序路径下执行的这个程序:
C:/work/source_code/java/thinking_in_JAVA/TIJ4-code/polymorphism/music>java Music
Java JDK1.6(java version "1.6.0_25") 好像依然比较傻,处理不了这种情况,我们必须要把全部的class路径都给点出来:
java polymorphism/music/Music
这样才可以,如果没有package语法,有的时候直接java Music就搞定了。