Javac的命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javac的命令相关的知识,希望对你有一定的参考价值。

 

 

    G("-g"),            // 在生成的class文件中包含所有调试信息(行号、变量、源文件)
    G_NONE("-g:none"),  // 在生成的class文件中不包含任何调试信息。
    /*
     *  -g:{keyword list}
        Generate only some kinds of debugging information, specified by a comma separated list of keywords. Valid keywords are:
        source   Source file debugging information
        lines    Line number debugging information
        vars     Local variable debugging information
     *
     */
    G_CUSTOM("-g:"),

    /*
     -Xlint Enable all recommended warnings. In this release, enabling all available warnings is recommended.
     -Xlint:all    Enable all recommended warnings. In this release, enabling all available warnings is recommended.
     -Xlint:none   Disable all warnings.
     -Xlint:name   Enable warning name. See the section Warnings That Can Be Enabled or Disabled with -Xlint Option for a list of warnings you can enable with this option.
     -Xlint:-name  Disable warning name. See the section Warnings That Can Be Enabled or Disabled with -Xlint Option for a list of warnings you can disable with this option.
     */
    XLINT("-Xlint"),
    XLINT_CUSTOM("-Xlint:"),

    DIAGS("-XDdiags="),
    NOWARN("-nowarn"),         // 不生成任何警告
    VERBOSE("-verbose"),       // 输出有关编译器正在执行的操作的消息
    /*
     * 编译的过程中,若需要相关java类的则首先在sourcefiles或@files列出的java源码文件中查找并编译,如果没找到,就在-sourcepath指定的路径中查找java源码文件
     */
    DEPRECATION("-deprecation"),

    /*
        JDK在编译一个java源文件时,搜索类文件的方式和顺序如下:
       Bootstrap classes,Bootstrap默认的是JDK自带的jar或zip文件,它包括jre\\lib下rt.jar等文件,JDK首先搜索这些文件.可以通过-bootclasspath来设置它。文件之间用分号";"进行分割。
        Extension classes,Extension默认的是位于jre"lib"ext目录下的jar文件,JDK在搜索完Bootstrap后就搜索该目录下的jar文件.可以通过-extdirs来设置。文件之间用分号";"来进行分割
        User classes,User classes搜索顺序为当前目录、环境变量 CLASSPATH、-classpath。
     */
    BOOTCLASSPATH("-bootclasspath"),
    EXTDIRS("-extdirs"),
    CLASSPATH("-classpath"),
    CP("-cp"),
    /**
     * -sourcepath指定java源码文件路径。编译的过程中,若需要相关java类的则首先在sourcefiles或@files列出的java源码文件中查找并编译,如果没找到,就在-sourcepath指定的路径中查找java源码文件
     */
    SOURCEPATH("-sourcepath"),
    XBOOTCLASSPATH_PREPEND("-Xbootclasspath/p:"),
    XBOOTCLASSPATH_APPEND("-Xbootclasspath/a:"),
    XBOOTCLASSPATH("-Xbootclasspath:"),
    DJAVA_EXT_DIRS("-Djava.ext.dirs="),
    ENDORSEDDIRS("-endorseddirs"),   // 覆盖签名的标准路径的位置
    DJAVA_ENDORSED_DIRS("-Djava.endorsed.dirs="),
    /*
     * -proc:{none|only}:默认情况下,javac会运行注解处理器并编译全部源文件。如果使用了proc:none选项,那么所有的注解处理过程都不会
     * 被执行——这在编译注解处理器本身的时候很有用。如果使用了proc:only选项,则只有注解处理过程会被执行——在运行类似质量检查工具或者标准检查器这
     * 样功能的注解处理器内部验证时很有用。
     */
    PROC("-proc:"),                 
    /*
     * -processor class1[,class2,class3…]:指定需要执行的注解处理器的完整类名。如果指定这个选项,上面提到的基于服务机制来搜索注解处理器过程就会被忽略。
     * 这对于在classpath下有多个注册的注解处理器但只想执行其中几个的情况非常有用。
     */
    PROCESSOR("-processor"),  
    /*
     * -processorpath path:用于指定注解处理器及相关依赖的位置。这是个可选项,如果没有设定,编译器会去默认的classpath路径下搜索。这在项目依赖和注解处理
     * 器依赖(运行过程中不需要的部分)之间保持明确的分离时非常有用。
     */
    PROCESSORPATH("-processorpath"),
    /*
     * 指定存放生成的类文件的位置,例如指定存放到C:/test下
     * javac -d C:/test C:/test/Test.java
     * 若未指定 -d 选项,则 javac 将把类文件放到与源文件相同的目录中
     */
    D("-d"),
    /*
     * -s dir:用于指定生成代码的保存位置。尽管对应源代码包层级结构的子目录在需要的时候会被自动创建,但是指定的这个父目录必须要在运行javac命令之前就已经存在。
     */
    S("-s"),

    IMPLICIT("-implicit:"), // 指定是否为隐式引用文件生成类文件
    ENCODING("-encoding"),  // 指定源文件使用的字符编码
    SOURCE("-source"),      // 提供与指定版本的源兼容性
    TARGET("-target"),      // 生成特定 VM 版本的类文件
    VERSION("-version"),    
    FULLVERSION("-fullversion"), 
    HELP("-help"),          // 输出标准选项的提要
    /*
     * -Akey[=value]:用于传递一个选项给处理器。只有在注解处理器上通过SupportedOptions注解注册过的选项才能传递进去。
     */
    A("-A"),
    /*
     * 列出非标准选项
     */
    X("-X"),
    /**
     *  // 直接将<标记>传递给运行时系统,如javac -J-Xms48m   Xxx.java // set the startup memory to 48M.
     */
    J("-J"),
    MOREINFO("-moreinfo"),
    WERROR("-Werror"),      // 出现警告时终止编译
    COMPLEXINFERENCE("-complexinference"),
    PROMPT("-prompt"),
    DOE("-doe"),
    PRINTSOURCE("-printsource"), // 打印源代码
    WARNUNCHECKED("-warnunchecked"),
    XMAXERRS("-Xmaxerrs"),
    XMAXWARNS("-Xmaxwarns"),
    XSTDOUT("-Xstdout"),        // 将编译器信息送到System.out中。缺省情况下,编译器信息送到 System.err 中。
    // -Xpkginfo:{always,legacy,nonempty}
    XPKGINFO("-Xpkginfo:"),     // Specify handling of package-info files 指定文件的处理
    XPRINT("-Xprint"),
    XPRINTROUNDS("-XprintRounds"),
    XPRINTPROCESSORINFO("-XprintProcessorInfo"),
    XPREFER("-Xprefer:"),
    O("-O"),          // 优化代码以缩短执行时间。使用 -O 选项可能使编译速度下降、生成更大的类文件并使程序难以调试。
    XJCOV("-Xjcov"),  // code coverage
    XD("-XD"),        // https://blogs.oracle.com/sundararajan/entry/javac_s_hidden_options

 

  

 

 

参考:

(1) http://www.cnblogs.com/xiazdong/p/3216220.html?utm_source=tuicool&utm_medium=referral

(2)-Xlint http://www.javaworld.com/article/2073587/javac-s--xlint-options.html


(3)不懂的命令看官方文档:http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html

(4)http://blog.csdn.net/hudashi/article/details/7058998

以上是关于Javac的命令的主要内容,如果未能解决你的问题,请参考以下文章

java新手求教&拷贝别人代码时javac编译出错了,情况如下:

java命令:javac/java/javap

编译JAVA程序成功但运行javac命令时出现错误

编译JAVA程序成功但运行javac命令时出现错误

cmd中使用javac对整个包编译怎么办?对包里面的某几个java文件编译怎么办?

如何用javac 和java 编译运行整个Java工程