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.....

解决方案 »

  1.   

    对了,使用java.lang.*
    需不需要配置classpath呢?
      

  2.   

    你的class带了包名,要按照包名称建文件夹
    你建一个chapter文件夹,把你的class丢到里面执行时 java -classpath . chapter.PackageTest 
    注意别把"."搞掉了
      

  3.   

    建立一个文件夹chapter,把PackageTest.class放到里面,再在chapter的上一级目录下输入:
    java chapter.PackageTest
    就好了。
      

  4.   


    我还有个问题,在引用静态变量PI时,Java是不是优先使用包中存在的类(Math)中的此名的静态变量?其次再使用java.lang.Math中的?