javac参数(-classpath, -sourcepath)详解分析和总结.docxVIP

javac参数(-classpath, -sourcepath)详解分析和总结.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
javac 参数(-classpath, -sourcepath)详解 首先是官方说法: -classpath: 设置用户类路径,它将覆盖 CLASSPATH 环境变量中的用户类路径。若既未指定 CLASSPATH 又未指定 -classpath,则用户类路径由当前目录构成。 -sourcepath: 指定用以查找类或接口定义的源代码路径。与用户类路径一样,源路径项用分号 (;) 进行分隔,它们可以是目录、JAR 归档文件或 ZIP 归档文件。如果使用包,那么目录或归档文件中的本地路径名必须反映包名。 注意:通过类路径查找的类,如果找到了其源文件,则可能会自动被重新编译。 官方说法很简洁,但是具体操作起来总觉得不太清晰,我们还是找几个例子,来具体分析一下: 具体例子: 假设我们有如下的目录结构: src-| |-foo-| |-Testfoo.java |-baz-| |-Testbaz.java classes-| 其中 Testfoo.java: package foo; public class Testfoo { //.... } 其中 Testbaz.java: package baz; import foo.Testfoo; public class Testbaz { //... } 也就是说 Testbaz 对 Testfoo 有引用。 我们目标是把 Testbaz 编译到目录 classes 里面,试用如下的命令: javac -d classes src/baz/Testbaz.java 命令失败,因为找不到它依赖的 Testfoo。我们可以用以下三种方式来实现: 我们最容易考虑到的就是编译被依赖的 Testfoo 类,并将其加入 Testbaz 的 CLASSPATH javac -d classes src/foo/Testfoo.java javac -d classes -classpath classes src/baz/Testbaz.java 第二行使用了-classpath,使得编译器在寻找 Testfoo 类的时候以 classes 为根目录,根据根目 录和 package 名,类名最终定位了需要用的(已编译出来的)Testfoo 类。 在编译 Testbaz 的时候把被依赖的 Testfoo 类加入 SOURCEPATH javac -d classes -sourcepath src src/baz/Testbaz.java 在编译条件里面加入-verbose 可以很清楚的看到,编译器在寻找 Testfoo 类的时候,以 src 为 根目录,根据根目录和 package 名,类名最终定位了需要用的(源代码)Testfoo 类。 把 CLASSPATH和 SOURCEPATH两者都加进来 javac -d classes src/foo/Testfoo.java javac -d classes -sourcepath src -classpath classes src/baz/Testbaz.java 两个属性都被加入,编译器首先会判断 Testfoo.class 和 Testfoo.java 是否同时存在。如果单独存在,则适应于以上的方法之一。如果同时存在,则判断.class 是否是.java 的最新编译,如果有差异,则重新编译.java 来覆盖.class 有必要补充一下-d 参数: -d 参数是很好的把源程序和目标代码分离的参数。-d 制定的是目标代码的根目录,源文件的包的结构将以目录形式反映到根目录上。美中不足的是-d 需要指定已经存在的目录,不能自动创建。

文档评论(0)

hao187 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档