加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – -sourcepath vs -classpath

发布时间:2020-12-14 19:34:15 所属栏目:Java 来源:网络整理
导读:学习oracle认证我正在尝试考试期间可能出现的所有可能情况. 例如,这里有一点关于 shell命令行(基于unix)的疑问: 让我们假设有一个名为myProject的文件夹和一个名为myProject / source的子文件夹. File SubFile.java位于myProject / source文件夹中,另一个文
学习oracle认证我正在尝试考试期间可能出现的所有可能情况.
例如,这里有一点关于 shell命令行(基于unix)的疑问:

让我们假设有一个名为myProject的文件夹和一个名为myProject / source的子文件夹.

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

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

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

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

javac -classpath ../ SubFile.java

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

你知道它为什么会这样吗?而且有没有机会使用-sourcepath标志访问超级文件夹?

解决方法

这取决于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 compiler和Differences 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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读