为什么单独运行加了package关键字的类不成功,但是用JCreater或者在其它类中引用(如类B中创建类A)运行就可成功? 如:CLASSPATH路径是: F;\JAVA
//类A,A.class文件放在 F:\JAVA\com\laopin 下
package com.laopin;
public class A{
public static void main(String[] args){
System.out.println("I am A!");
}
public void print(){
System.out.println("I am imported!");
}
}
//类B,放在 F:\JAVA 下
import com.laopin.A;
public class B{
public static void main(String[] args){
System.out.println("I am B,Import A!");
new A().print();
}
}
编译类B,运行结果是:I am B,Import A!
I am imported!
单独运行A时,用JCreater运行成功:I am A!
但用java命令时,我在F:\JAVA\com\laopin下运行,以及在e:\盘下运行,都得到
如下的错误:
Exception in thread "main" java.lang.NoClassDefFoundError: A (wrong name: com/laopin/A)
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$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:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
编译javac B.java
运行java B
那为什么用JCreator运行又成呢?
编译javac com\laopin\A.java
运行java com.laopin.A