gpt4 book ai didi

java - -sourcepath 与 -classpath

转载 作者:搜寻专家 更新时间:2023-10-31 20:13:19 26 4
gpt4 key购买 nike

为了oracle认证而学习我正在尝试所有可能在考试中出现的场景。比如这里对shell命令行(unix based)有一点疑问:

假设有一个名为 myProject 的文件夹和一个名为 myProject/source 的子文件夹。

文件 SubFile.java 位于文件夹 myProject/source 中,另一个文件 File.java 位于 myProject 中> 文件夹。

通过键入以下命令,我得到不同的行为:

cd source(因此,目前我在“myProject/source”)

javac -sourcepath ../File.java
//命令 ../无法访问“文件夹”然后在从 myProject 文件夹编译 File.java 并返回到子文件夹后,如果我尝试:

javac -classpath ../SubFile.java

//使用标志 -classpath 它似乎接受 ../ 语法来访问 super 文件夹。

你知道为什么会这样吗?此外,是否有机会使用 -sourcepath 标志访问 super 文件夹?

最佳答案

这取决于 SubFile 是否也引用了 File

考虑以下代码:

public class SubFile {
private static File file = new File();
}

假设这个文件在你的源文件夹里,假设你在源文件夹里,那么

javac -sourcepath ../ SubFile.java

会将SubFile.java编译成源码文件夹内的SubFile.class,并将File.java编译成File。 class 在父文件夹中。如果这些文件之间没有依赖关系,那么编译器不会编译File.java(意思是,编译器不会自动编译源路径<上的所有文件)。

当使用 -classpath 编译时,也会在类路径中搜索源文件,除非您明确指定一个单独的源路径 - 在以下情况下,编译器将抛出错误(假设您之前已经清理了 File.class 文件):

javac -classpath .. -sourcepath \temp SubFile.java

另见 javac - Java programming language compilerDifferences between classpath and sourcepath options of javac获取更多信息。

这两个链接的重点是:

Note: Classes found through the class path may be subject to automatic recompilation if their sources are also found.

关于java - -sourcepath 与 -classpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15087224/

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