Rol*_*all 5 java javac classpath
学习oracle认证我正在尝试考试期间可能出现的所有可能情况.例如,这里有一点关于shell命令行(基于unix)的疑问:
我们假设有一个名为的文件夹myProject和一个名为的子文件夹myProject/source.
文件SubFile.java位于文件夹中myProject/source,另一个文件File.java位于myProject文件夹中.
通过键入以下命令,我会遇到不同的行为:
cd source (因此,目前我在"myProject/source")
javac -sourcepath ../ File.java
//命令../无法访问"文件夹",然后File.java从myProject文件夹编译后返回子文件夹,如果我尝试:
javac -classpath ../ SubFile.java
//带有标志-classpath它似乎接受../访问该super文件夹的语法.
你知道它为什么会这样吗?而且有没有机会访问super带有-sourcepath标志的文件夹?
这要看是否SubFile也有参考文献File。
考虑以下代码:
public class SubFile {
private static File file = new File();
}
Run Code Online (Sandbox Code Playgroud)
假设这个文件位于你的源文件夹中,并且假设你在源文件夹中,那么
javac -sourcepath ../ SubFile.java
Run Code Online (Sandbox Code Playgroud)
将编译SubFile.java到SubFile.class源文件夹内,并将编译File.java到File.class父文件夹中。如果这些文件之间没有依赖关系,那么编译器将不会编译File.java(意味着编译器不会自动编译 上的所有文件sourcepath)。
当使用 进行编译时-classpath,也会在类路径中搜索源文件,除非 您显式指定单独的源路径 - 在以下情况下,编译器将抛出错误(假设您之前已经清理了 File.class 文件):
javac -classpath .. -sourcepath \temp SubFile.java
Run Code Online (Sandbox Code Playgroud)
另请参阅javac - Java 编程语言编译器和javac 的类路径和源路径选项之间的差异以获取更多信息。
这两个链接的要点是:
注意:如果也找到了通过类路径找到的类的源,则可能会自动重新编译它们。
| 归档时间: |
|
| 查看次数: |
4728 次 |
| 最近记录: |