编译之后,运行java PackageMain,如期得到运行结果。然后,我试着将classpath去掉前面的“.;”设置为:d:\study\j2ee\java
将PackageMain.java文件中恢复为import  packagesimple.*;
然后编译通过,但是运行java PackageMain时候却提示:
Exception in thread "main" java.lang.NoClassDefFoundError: PackageMain请问各位兄弟,这是怎么回事?

解决方案 »

  1.   

    packagesimple目录到底是在j2ee下还是java下?
      

  2.   

    楼上:
    D:\STUDY\J2EE\JAVA\packagesimple
      

  3.   

    当然有问题啦,你import的就是你当前java文件所在的package吧?没有这样作发的。package org.xxx.common;
    import org.xxx.common.*;
    class XXX
    {}这样做是不对的
      

  4.   

    楼主,将你的编译命令改为:javac  PackageTest.java PackageMain.java  
      

  5.   

    楼主,我试了一下,还有一个办法你不用修改程序,也能通过。把PackageTest.java  编译好之后,将这个java文件,从当前目录移走,然后你再编译PackageMain.java  文件,就不会报错了。至于原因嘛,我想是和jdk得类载入机制有关吧!
      

  6.   

    classpath的设置是  .;d:\study\j2ee\java
    编译时是这样
    D:\STUDY\J2EE\JAVA\packagesimple>javac  PackageMain.java  
    ——————————————————————————————————————编译的时候怎么多了\JAVA\packagesimple
      

  7.   

    PackageMain应该放在D:\STUDY\J2EE\JAVA\目录下
      

  8.   

    楼上:
    我将PackageMain.java这个文件放在任何地方都可以编译通过(javac  PackageMain.java )也可以正常运行(java PackageMain),就是放在和PackageTest.java同 一个目录下不能编译。(classpath的设置是  .;d:\study\j2ee\java)
      

  9.   

    你不应该把他们放到同一个目录下
    因为PackageTest.java  声明了package  packagesimple; 
    而PackageMain.java没有生命package,表示他在类路径的根目录
    不管classpath是什么,PackageMain.java应该在packagesimple这个目录的父母录,而PackageTest.java在packagesimple这个目录中
    在PackageMain所在的目录执行
    javac -cp . *.java
      

  10.   

    package的引用之一的目的就是为了调用一些不在同一个文件夹内的公共类的功能!
    你既然要把两个公共类放在同一个文件夹里.也就是同一个包内.你又何必import 呢
    这样做.我觉得毫无意义....首先楼主对package的理解还是不够过关!