Java编译器选项,即javac -d
我正在编译一个具有package语句的程序。例如
package APPC_LU62.Runtime ;
我也有一个与package语句匹配的现有目录结构。
C:\APPC_LU62\Runtime
如何防止javac编译器在预先存在的目录结构中创建相同的目录结构?即
C:\APPC_LU62\Runtime\APPC_LU62\Runtime
在我看来,编译器应该足够“聪明”,可以在创建目录结构之前先对其进行检查。
谢谢
回答:
通常,编译器期望源文件并根据包结构输出类文件。
如果不提供任何选项-sourcepath
(或未提供任何-classpath
sourcepath),则相对于当前目录搜索源文件。如果给出了源路径,则将相对于该路径搜索源文件(除了在命令行上直接指定的任何文件)。
同样,如果不指定任何-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