各位大侠,请教一个package的问题!(50分)

L

Lfish

Unregistered / Unconfirmed
GUEST, unregistred user!
package c06;//加上这行代码什么执行时报下面的错误.是不是我的classpath有问题??
class WaterSource {
private String s;
WaterSource() {
System.out.println("WaterSource()");
s = new String("Constructed");
}
public String toString() { return s;
}
}
public class SprinklerSystem {
private String valve1, valve2, valve3, valve4;
WaterSource source;
int i;
float f;
void print() {
System.out.println("valve1 = " + valve1);
System.out.println("valve2 = " + valve2);
System.out.println("valve3 = " + valve3);
System.out.println("valve4 = " + valve4);
System.out.println("i = " + i);
System.out.println("f = " + f);
System.out.println("source = " + source);
}
public static void main(String[] args) {
SprinklerSystem x = new SprinklerSystem();
x.print();
}
} ///:~
D:/javaclass/c06>java SprinklerSystem
Exception in thread "main" java.lang.NoClassDefFoundError: SprinklerSystem (wron
g name: c06/SprinklerSystem)[:(]
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:486)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:11
1)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:248)
at java.net.URLClassLoader.access$100(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:297)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:286)
at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)
 
清在D:/javaclass/>下执行java c06.SprinklerSystem
 
可以运行了,多谢曹大侠!!!
但是能讲讲原理吗?
 
在java中,记住类名中的'.'就是一层目录。
你把你的类加在c06这个包中,那你的类的全名就是c06.SprinklerSystem
对应到文件系统的目录结构就是要c06/SprinklerSystem.
而你在当前目录为D:/javaclass/的时候,才能够找到这个类。
 
明白了!多谢!
 
顶部