Java编译器选项,即javac -d

我正在编译一个具有package语句的程序。例如

package APPC_LU62.Runtime ;

我也有一个与package语句匹配的现有目录结构。

C:\APPC_LU62\Runtime

如何防止javac编译器在预先存在的目录结构中创建相同的目录结构?即

C:\APPC_LU62\Runtime\APPC_LU62\Runtime

在我看来,编译器应该足够“聪明”,可以在创建目录结构之前先对其进行检查。

谢谢

回答:

通常,编译器期望源文件并根据包结构输出类文件。

如果不提供任何选项-sourcepath(或未提供任何-classpathsourcepath),则相对于当前目录搜索源文件。如果给出了源路径,则将相对于该路径搜索源文件(除了在命令行上直接指定的任何文件)。

同样,如果不指定任何-d选项,则相对于当前目录,类文件将根据包结构放入目录中。如果提供-d选项,则将类文件相对于该选项给定的目录放置。不存在的目录将在此处创建。

因此,如果要在与源文件相同的目录树中创建输出,通常的方法是更改​​为该树的根(C:\在您的情况下),然后从那里调用javac:

javac -classpath ... -sourcepath . APPC_LU62\Runtime\*.java

(或仅列出您实际要编译的Java文件)。或者,您可以添加-d C:\-sourcepath C:\选项,然后从任何需要的地方调用命令:

javac -classpath ... -sourcepath C:\ -d C:\  C:\APPC_LU62\Runtime\*.java

以后使用java命令执行类也同样有效:这也期望根据包结构在目录中使用类,其中根是类路径中提到的目录或jar文件。因此,你必须添加C:\-classpath您的java电话。

(顺便说一句,我不会将某个驱动器的根目录用作包层次结构的根目录-最好将所有目录都移到一个目录下。)

以上是 Java编译器选项,即javac -d 的全部内容, 来源链接: utcz.com/qa/419557.html

回到顶部