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。
2007-3-19上午9:20