PackageTest   
          |   
          |__source       Main.java   
                |   
                |__pktest       PackageTest.java       PackageSecond.java   
                      |   
                      |__subpk     PackageSub.java   这个包有3层目录。在每个类文件内需要指明包的名字,然后需要把每个.java文件放在相应名字的目录下,然后在source目录进行编译。命令为javac Main.java,这样每个目录下的.java文件都可以被编译为.class文件了。但pktest下面的那个PackageTest.java没有被自动编译。所以需要单独编译一下。命令为在source目录下打入javac -classpath e:\PackageTest\source\pktest;e:\PackageTest\source\pktest\subpk;. .\pktest\PackageTest.java或者使用相对路径:javac -classpath pktest;pktest\subpk;.  pktest\PackageTest.java编译成功。然后在source目录下打入java pktest.PackageTest即可正确运行程序了。另外需要检查每个main()函数里面是否缺少String[] args这个残数。否则出错。在某个类文件所在的目录进行编译包的话,如果该文件内import了子目录里面的类,则总是出错。比如在e:\PackageTest\source\pktest>目录内对里面的PackageTest.java进行编译,输入命令:javac -classpath subpk;. PackageTest.java 则出错信息如下:pktest.subpk 不存在。说明“该文件在编译的时候要到相应的包里面引用有关类。结果从当前目录开始算起,没有所谓的pktest.subpk目录。因此编译失败。所以这样的分层包的编译,需要在包含"包"的上级目录进行编译,也即在e:\PackageTest\source>内进行编译。输入javac -classpath pktest;pktest\subpk;.  pktest\PackageTest.java。欢迎大家一起讨论JAVA。谢谢。
青岛王刚
QQ4916255072007-3-19上午9:20