一、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

JavaSE——javac、javap、jad的更多相关文章

  1. [练习]使用dx.bat、dexdump.exe、javap、Baksmali

    PART0 这几个工具的关系可以这样描述: 用例: public class Hello { public int foo(int a , int b ) { return (a+b) * (a-b) ...

  2. windows命令行下简单使用javac、java、javap详细演示

    最近重新复习了一下java基础,在使用javap的过程中遇到了一些问题,这里便讲讲对于一个类文件如何编译.运行.反编译的.也让自己加深一下印象. 如题,首先我们在桌面,开始->运行->键入 ...

  3. windows命令行中java和javac、javap使用详解(java编译命令)

    如题,首先我们在桌面,开始->运行->键入cmd 回车,进入windows命令行.进入如图所示的画面: 可知,当前默认目录为C盘Users文件夹下的Administrator文件夹.一般而 ...

  4. 【转帖】windows命令行中java和javac、javap使用详解(java编译命令)

    windows命令行中java和javac.javap使用详解(java编译命令) 更新时间:2014年03月23日 11:53:15   作者:    我要评论 http://www.jb51.ne ...

  5. cmd中java的编译命令——java和javac、javap

    最近重新复习了一下java基础,这里便讲讲对于一个类文件如何编译.运行.反编译的.也让自己加深一下印象   如题,首先我们在桌面,开始->运行->键入cmd 回车,进入windows命令行 ...

  6. 【黑马JavaSE】1.1JavaSE、环境变量、CMD使用、常量、变量、数据类型转换(自动/强制)、ASCII码表、Unicode万国码表

    文章目录 SUN公司,詹姆斯.劳瑟琳,Java祖师爷 Java语言开发环境搭建 把Java添加到环境变量的方法 命令行CMD里一些报的错误 命令控制行常用操作的代码展示 Notepad++.注释.标识 ...

  7. 关于MyEclipse查看底层源码出现source not found的问题(MyEclipse、Eclipse配置JAD)

    一.MyEclipse 第一步:      下载jad.exe文件:jad下载地址 eclipse插件:net.sf.jadclipse_版本号.jar下载地址一 net.sf.jadclipse_版 ...

  8. Eclipse For JavaSE安装、配置、测试

    Eclipse For JavaSE安装.配置.测试(win7_64bit) 目录 1.概述 2.本文用到的工具 3.安装与配置 4.JavaSE开发测试 5.ADT安装与Android开发测试 6. ...

  9. javaSE、javaEE、javaME

    javaSE.javaEE.javaME区别: Java SE 是做电脑上运行的软件. Java EE 是用来做网站的-(我们常见的JSP技术) Java ME 是做手机软件的.

随机推荐

  1. 测试驱动开发(TDD)及测试框架Mocha.js入门学习

    组里马上要转变开发模式,由传统的开发模式(Developer开发,QA测试),转变为尝试TDD(Test-driven development,测试驱动开发)的开发模型.由此将不存在QA的角色,或者仅 ...

  2. lottie使用

    dependencies { implementation 'com.airbnb.android:lottie:2.5.5' } 动画素材地址:https://www.lottiefiles.com ...

  3. mysql-5.7安装配置指导

    mysql 安装 yum 安装mysql 源码编译安装mysql 通过yum安装 下载yum仓库配置安装包 MySQL Yum Repository http://dev.mysql.com/down ...

  4. memcached 的配置及 spymemcached 客户端简单使用

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.同时也可以用作不同系统之间的数据共享.应用比较广泛.下面介绍一下环境的memcached环境的搭建及简单实 ...

  5. cesium 加载倾斜摄影模型(这里有一坑)

    代码如下: // Construct the default list of terrain sources. var terrainModels = Cesium.createDefaultTerr ...

  6. IOS Git源代码管理工具

    .新建一个“本地仓库” $ git init .配置仓库 >告诉git你是谁 git config user.name lnj >告诉git怎么联系你 git config user.em ...

  7. android+nutz后台如何上传和下载图片

    android+nutz后台如何上传和下载图片  发布于 588天前  作者 yummy222  428 次浏览  复制  上一个帖子  下一个帖子  标签: 无 最近在做一个基于android的ap ...

  8. Android(java)学习笔记73:Intent启动Activity

    1. Intent启动Activity案例 (1)首先是main.xml和other.xml文件如下: main.xml文件: <?xml version="1.0" enc ...

  9. P1567 统计天数

    题目背景 统计天数 题目描述 炎热的夏日,KC非常的不爽.他宁可忍受北极的寒冷,也不愿忍受厦门的夏天.最近,他开始研究天气的变化.他希望用研究的结果预测未来的天气. 经历千辛万苦,他收集了连续N(1& ...

  10. CDH4.5.0源代码编译

    Unable to load native-hadoop library for your platform解决 安装maven 1 cmake-2.8.12.1.tar.gz cd cmake-2. ...