• JavaSE——javac、javap、jad


    一、javac

    用法:javac <选项> <源文件>

    其中,可能的选项包括:

      -help                            帮助信息

      -g                                 生成所有调试信息

      -g:none                        不生成任何调试信息

      -g:{lines,vars,source}    只生成某些调试信息

      -nowarn                        不生成任何警告

      -verbose                        输出有关编译器正在执行的操作的消息

      -deprecation                  输出使用已过时的 API 的源位置

      -classpath <路径>          指定查找用户类文件的位置

      -cp <路径>                    指定查找用户类文件的位置

      -sourcepath <路径>       指定查找输入源文件的位置

      -bootclasspath <路径>    覆盖引导类文件的位置

      -extdirs <目录>              覆盖安装的扩展目录的位置

      -endorseddirs <目录>     覆盖签名的标准路径的位置

      -d <目录>                     指定存放生成的类文件的位置

      -encoding <编码>           指定源文件使用的字符编码

      -source <版本>              提供与指定版本的源兼容性

      -target <版本>               生成特定 VM 版本的类文件

      -version                         版本信息

      -help                             输出标准选项的提要

      -X                                 输出非标准选项的提要

      -J<标志>                       直接将 <标志> 传递给运行时系统

    二、javap

    用法:
      javap [ 命令选项 ] class. . .

      javap 命令用于解析类文件。其输出取决于所用的选项。若没有使用选项,javap 将输出传递给它的类的 public 域及方法。javap 将其输出到标准输出设备上。

    命令选项  

      -help              输出 javap 的帮助信息。

      -l                 输出行及局部变量表。

      -b                 确保与 JDK 1.1 javap 的向后兼容性。

      -public              只显示 public 类及成员。

      -protected                      只显示 protected 和 public 类及成员。

      -package                        只显示包、protected 和 public 类及成员。这是缺省设置。

      -private                          显示所有类和成员。

      -J[flag]                           直接将 flag 传给运行时系统。

      -s                                   输出内部类型签名。

      -c                                   输出类中各方法的未解析的代码,即构成 Java 字节码的指令。

      -verbose                         输出堆栈大小、各方法的 locals 及 args 数,以及class文件的编译版本

      -classpath[路径]               指定 javap 用来查找类的路径。如果设置了该选项,则它将覆盖缺省值或 CLASSPATH 环境变量。目录用冒号分隔。

      - bootclasspath[路径]        指定加载自举类所用的路径。缺省情况下,自举类是实现核心 Java 平台的类,位于 jrelibt.jar 和 jrelibi18n.jar 中。

      -extdirs[dirs]                   覆盖搜索安装方式扩展的位置。扩展的缺省位置是 jrelibext。

     三、jad

    用法:

      jad 选项 class文件

     -a         - 用JVM字节格式来注解输出
    -af         - 同 -a,但是注解的时候用全名称
    -clear         - 清除所有的前缀
    -b          - 输出多于的括号 (e.g., if(a) { b(); }, default: no)
    -d <dir>        - 指定输出文件的文件目录
    -dead                    -试图反编译代码的dead 部分(default: no)
    -disass       - 不用用字节码的方式反编译 (no JAVA source generated)
    -f           - 输出整个的名字,无论是类还是方法
    -ff           -输出类的成员在方法之前 (default: after methods)
    -i           - 输出所有的变量的缺省的最初值
    -l<num>       - 将strings分割成指定数目的块的字符 (default: no)
    -lnc           - 将输出文件用行号来注解 (default: no)
    -nl           - 分割strings用新行字符 newline character (default: no)
    -nodos         -不要去检查class文件是否以dos方式写 (CR before NL, default: check)
    -nocast         - 不要生成辅助文件
    -nocode         -不要生成方法的源代码
    -noconv         - 不要转换java的定义符 (default: do)
    -noctor         - 不允许空的构造器存在
    -noinner         -关掉对内部类的支持 (default: turn on)
    -nolvt            - 忽略局部变量的表信息
    -nonlb         - 不要输出一个新行在打开一个括号之前 (default: do)
    -o           - 无需确认直接覆盖输出 (default: no)
    -p           - 发送反编译代码到标准输出 STDOUT (e.g., for piping)

    其次.常用命令

      jad -o -r -sjava -dsrc test.class

    -r表示保持原始package结构
    -dsrc表示output目录为当前的src目录
    -sjava表示反编译后的后缀为.java

    tree目录下的所有*.class文件
        jad -o -r -sjava -dsrc tree/**/*.class

        unix可以表示为:jad -o -r -sjava -dsrc 'tree/**/*.class'

    指定输出文件的名字的话,用以下的转移命令

    jad -p example1.class > myexm1.java
    输出带字节码注释和源码的(最常用)
      jad -o -a Test.class > ss.java

  • 相关阅读:
    npm 如何查看一个包的版本信息?
    npm使用常见问题及注意事项
    npm依赖管理:冗余,依赖树
    删除cnpm
    SQL Server 2012 读写分离设置
    SQL Server AlwaysOn读写分离配置
    Sql server Always On 读写分离配置方法
    Sqlserver 2012 Always on技术
    构建高性能web之路------mysql读写分离实战
    EJB配置jboss数据源
  • 原文地址:https://www.cnblogs.com/mingcaoyouxin/p/4164964.html
Copyright © 2020-2023  润新知