不好意思,上次就发过这个问题,但一直没能解决,主要是java文件中包含package关键字就不能运行了,但可以编译。《java编程思想第四版》第八章 多态,最开始的几个例子如下:
//: polymorphism/music/Note.java
// Notes to play on musical instruments.
package polymorphism.music;
public enum Note {
MIDDLE_C, C_SHARP, B_FLAT; // Etc.
}
//: polymorphism/music/Instrument.java
package polymorphism.music;
import static net.gondi.util.Print.*;
class Instrument {
public void play(Note n) {
print("Insturment.play()");
}
}
//: polymorrphism/music/Wind.java
package polymorphism.music;
// Wind objects are instruments
// because they have the same interface:
public class Wind extends Instrument {
// Redefine interface method:
public void play(Note n) {
System.out.println("Wind.play() " + n);
}
}
//: polymorphism/music/Music.java
// Inheritance & upcasting.
package polymorphism.music;
public class Music {
public static void tune(Instrument i) {
// ...
i.play(Note.MIDDLE_C);
}
public static void main(String[] args) {
Wind flute = new Wind();
tune(flute); // Upcasting
}
}
就像上次一样,我的意思是,在这个例子中Music.java是带有程序main入口的文件,并且里面有一行package,于是虽然可以通过编译,然而用cmd运行 java Music后就出现这个错误:
lymorphism/music/Music)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
4)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
我的java环境变量都设置好了
java version "1.6.0_01"
Java(TM) SE Runtime Environment (build 1.6.0_01-b06)
Java HotSpot(TM) Client VM (build 1.6.0_01-b06, mixed mode, sharing)
如果编写的java文件中不含package关键字,但有import导入其他class方法的话,就是可以正常的运行,只要加了package关键字就运行出错。。。555,救命~~
上面的代码是抄书上的,希望热心大侠们用cmd运行试试,看看能运行吗?好像用其他一些IDE可以运行,不过偶还是初学者,想用文本编辑器+CMD学习。。
我用的编辑器是EditPlus + 设置的java编译和运行配置,系统是XP,JDK是1.6的。另,CMD下运行
[此贴子已经被作者于2007-9-19 10:43:44编辑过]