gpt4 book ai didi

java - sourcepath 和只指定源文件的区别?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:09:20 26 4
gpt4 key购买 nike

javac -sourcepath 选项有什么意义?

假设你有一个文件 Ball.java 和一个文件 Eight.java,运行起来似乎没有区别:

javac Eight.java lib/pool/Ball.java

javac Eight.java -sourcepath lib

类路径对我来说很有意义,因为它意味着您只需要将类文件分发给不需要弄乱源代码的开发人员,但我认为您只有在您自己的情况下才可能拥有/需要源代码拥有/一个内部项目,所以不明白为什么需要它。

人们是否拥有大型源代码存储库而不是类?

通过进一步的测试,我已经确认 -sourcepath 甚至没有像类路径那样考虑源的最后修改日期,因此甚至无法想象在构建过程中节省时间。与使用 -classpath 时一样,如果 .class 文件不存在而源文件存在,或者如果 .java 文件比 .class 文件更新,这将构建 .class 文件,而无论如何都会再次构建 sourcepath 上的任何源文件他们有多新。当同时指定 -sourcepath 和 -classpath 时,如果源文件较新,它会采取类路径的操作来重建,因此指定源路径和类路径似乎完全没有意义。我还进行了测试以确保 -sourcepath 和 -classpath 都只构建解析所需的必要源文件。与指定我能找到的特定 .java 文件相比,-sourcepath 的唯一好处是 sourcepath 只需指定一个目录,并且会自动提取任何 jar 或 zip 文件。

那么 -sourcepath 的意义是不是因为懒惰(不想提取并指定所有源文件)?使用 -sourcepath 而不是 -classpath 有什么好处吗?因为它们似乎做同样的事情,但类路径通过在源不需要重建时节省时间来更好地执行它。

最佳答案

源路径用于定位在您要求编译的文件(在您的示例中为 Eight.java)中引用的类的 .java 文件,其中不存在 .class 文件。编译器也会自动编译它们。我不确定它是否比较 .java 和相应的 .class 文件的修改时间,如果它较新则重新编译 .java,但我认为它确实如此。

关于java - sourcepath 和只指定源文件的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16186967/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com