在准备 Oracle 认证的过程中,我正在尝试考试期间可能出现的所有可能情况。
比如这里对shell命令行有一点疑问(基于unix):
假设有一个名为myProject
和一个名为的子文件夹myProject/source.
File SubFile.java
位于文件夹中myProject/source
和另一个文件File.java
is in myProject
folder.
通过输入以下命令,我会得到不同的行为:
cd source
(因此,目前我在“myProject/source”上)
javac -sourcepath ../ File.java
// 命令 ../ 无法访问“文件夹”
然后编译后File.java
from myProject
文件夹并返回子文件夹,如果我尝试:
javac -classpath ../ SubFile.java
// 带有标志-classpath
它似乎接受../
语法来访问super
folder.
你知道它为什么会这样吗?此外,是否有机会访问super
文件夹与-sourcepath
flag?
这取决于是否SubFile
还参考File
.
考虑以下代码:
public class SubFile {
private static File file = new File();
}
假设这个文件位于你的源文件夹中,并且假设你在源文件夹中,那么
javac -sourcepath ../ SubFile.java
将编译SubFile.java
into SubFile.class
在源文件夹内,并将编译File.java
into File.class
在父文件夹中。如果这些文件之间不存在依赖关系,那么编译器将not编译File.java
(意味着编译器不会自动编译上的所有文件sourcepath
).
编译时使用-classpath
,然后也在类路径中搜索源文件,unless您显式指定单独的源路径 - 在以下情况下,编译器将抛出错误(假设您之前已经清理过 File.class 文件):
javac -classpath .. -sourcepath \temp SubFile.java
也可以看看javac - Java 编程语言编译器 http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html and javac 的类路径和源路径选项之间的差异 https://stackoverflow.com/questions/2441760/differences-between-classpath-and-sourcepath-options-of-javac了解更多信息。
这两个链接的要点是:
注意:如果也找到了通过类路径找到的类的源,则可能会自动重新编译它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)