读书人

javac 容易命令引出的回顾

发布时间: 2012-09-09 09:27:54 作者: rapoo

javac 简单命令引出的回顾
http://stackoverflow.com/questions/10812857/how-to-create-a-package-in-java
这上面的一个问题,有点费解,如果我在d:test目录下先编译Child.java然后再编译Parent.java,之后运行Parent为什么会有错误呢?
test下 \test>javac A.java 找不到B
d盘下 >javac test.A.java javac: 找不到文件: test.A.java
d javac A.java javac: 找不到文件: A.java

javac找文件是根据classpath配置的路径,(如果直接配.则是当前路径)+包路径+类名,找某个类文件是通过操作系统的文件检索来做的,所以不要出现javac test.A.java这种形式。
在test目录下直接javac A.java 找不到B的原因: javac如果用到其他类文件并且没有显式引入,会根据classpath路径+本包名+文件名.class | .java ,这样很自然就找不到B了。
所以可以再D:\>javac test\A.java 这样两个文件都会被编译。
显式命令行中文件系统查找,其他又是java的方式查找。

javac -classpath 这个命令有点奇怪,为什么都已经配置了classpath后面源文件还要写全路径名呢?

读书人网 >编程

热点推荐