package chapter;public class Math
{
public static double PI = 3.14;
}
package chapter;import java.lang.*;public class PackageTest
{
public static double PI = Math.PI;
public static double PI2 = java.lang.Math.PI; public static void main(String [] args)
{
System.out.println(PI);
System.out.println(PI2);
}
}编译两个源文件,之后java PackageTest
错误信息提示如下:Exception in thread "main" java.lang.NoClassDefFoundError: PackageTest (wrong na
me: chapter/PackageTest)
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)我用的是jdk1.5,重新安装后仍然出现此问题。另外问下,main中的第一个print语句输出的是3.14,还是3.1492653.....
需不需要配置classpath呢?
你建一个chapter文件夹,把你的class丢到里面执行时 java -classpath . chapter.PackageTest
注意别把"."搞掉了
java chapter.PackageTest
就好了。
我还有个问题,在引用静态变量PI时,Java是不是优先使用包中存在的类(Math)中的此名的静态变量?其次再使用java.lang.Math中的?