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

时间: 2024-10-14 17:25:34

Javac的命令的相关文章

javac 编译命令的使用

工作中需要增量打包脚本,基本要求是从SVN服务器上download下java源码包,然后编译后,增量打包进application.jar.现在叙述一下我写脚本过程中不太熟悉的两个命令. 1. 从SVN服务器上下载源码包的命令:svn export --username  xiaopuser --password xiaoppass http://svnpath/project 2.在命令行下编译java文件的命令:javac  -Xlint   -classpath  lib/fr-xx-8.0

javac java 命令行编译运行程序

参考自:http://blog.csdn.net/xxyyww/article/details/5784803 前言: 在命令行运行JAVA的时候,要做的事情就不是点一下鼠标就可以了.如果再用到第三方JAR包,命令就更长了.一个比较好的方法就是使用ant,不过我发现一个问题,在命令行中使用ant的时候,它的输入和eclipse的console一样蛋疼.比如: Scanner in = new Scanner(System.in); System.out.println("请输入一个整数:&quo

Javac的命令组成

JavacOption定义了几个方法,如下: public interface JavacOption { OptionKind getKind(); /** Does this option take a (separate) operand? * @return true if this option takes a separate operand */ boolean hasArg(); /** Does argument string match option pattern? * @

在CMD窗口中使用javac和java命令进行编译和执行带有包名的具有继承关系的类

一.背景 最近在使用记事本编写带有包名并且有继承关系的java代码并运行时发现出现了很多错误,经过努力一一被解决,今天我们来看一下会遇见哪些问题,并给出解决办法. 二.测试过程 1.父类代码 1 package com.hafiz.zhang; 2 3 public class Fu 4 { 5 private Integer i ; 6 7 public void sayHello(String name) { 8 System.out.println("Hello " + name

java安装jdk时,执行javac出错

进来学习maven,在机器重新配置一套jdk, 卸载掉1.6,安装1.7是报javac不是有效的命令,java,java -version 都没问题.这个问题一直困扰了我好久,之间1.6也是这个问题,找解决方法,找了好久,今天装1.7依然如此,找的我快要疯了,以为是电脑系统的问题,准备明天重装系统了.在安装好maven ,输入mvn -version 是报jkd 的 JAVA_HOME安装有问题,很郁闷,结果一看,原来我一值是JAVA_HOME配置,配置的路径有点深入. 错误的JAVA_HOME

【总结】java命令解析以及编译器,虚拟机如何定位类

学Java有些日子了,一直都使用IDE来写程序.这样的好处就是能让我连如何用命令行编译,解释执行Java源代码都不知道,就更不清楚JDK中的编译器和虚拟机(包含字节码解释器)是如何定位到类文件的.悲哀呀....... 1.安装JDK,配置环境变量. 不将JDK所在的目录配置到系统环境变量中,系统怎么能找到JDK中的编译器,解释器在哪呀?如果不指明JDK的bin文件夹的位置,在shell中是无法找到javac/java命令的.这点就不多说了 2.编译,解释执行Java程序.[ javac命令/ja

Mac 终端命令运行java

链接地址:http://www.cnblogs.com/wangrui-techbolg/archive/2012/12/29/2839047.html 由于mac已经装好java环境,所以直接课运行java命令,很方便. 编译一个java文件: javac /Users/用户名/Desktop/HelloWorld.java  (运行后会得到一个HelloWorld.class文件,存放目录在desktop) 运行:首先要cd到HelloWorld.class的目录,然后:java Hello

Java初学者:java是如何在命令行下编译运行程序的

我们上文书说到,我们首先安装Java,然后设置Java环境,然后编译运行了一个简单的Java程序,在命令行模式下显示了一个“Hello baby”.那么,为什么呢?发生了什么呢? 首先,下载安装Java就不用问为什么了对吧?所谓巧妇难为无米之炊,没有Java却想用,这不可能的. 其次,为什么我们要那样设置Java的运行环境呢? 因为,目前为止,我只是想在命令行下编译运行java程序,这样一来,你就需要让命令行模式识别java的命令.而命令行下能自动识别的命令,必须我们手动的把命令的路径添加进去.

在Editplus中配置java的(带包)编译(javac)和执行(java)的方法

配置的前提是电脑安装了JDK而且配置好了相关的环境变量(JAVA_HOME,path和classpath). 配置好后在命令行中输入javac和java验证是否配置成功: 假设出现上面的情况则说明配置成功. 首先打开Editplus,打开工具-配置自己定义工具(或者使用快捷键Alt+G): 然后点击"组名",将Group 1改为"Java编译与执行": 然后点击"加入工具"-"程序": 1加入编译功能 "菜单文字&q