文章目录
- 1. javap -version 版本信息
- 2. javap -verbose 输出附加信息
- 3. javap -l 显示行号和局部变量列表
- 4. javap -c 对代码进行反汇编(或叫反编译生成汇编代码,一般说反编译是生成java代码),分解方法代码,也就是显示每个方法具体的字节码
- 5. javap -s 输出内部类型签名
- 6. javap -sysinfo 显示正在处理的类的系统信息 (路径, 大小, 日期, MD5 散列)
- 7. javap -constants 显示最终常量
位置:jdk\bin
作用:对class文件进行解析
语法:javap <options> <classes>
参数 | 说明 |
---|---|
-version | 版本信息 |
-verbose | 输出附加信息 |
-l | 显示行号和局部变量列表 |
-c | 对代码进行反汇编(或叫反编译生成汇编代码,一般说反编译是生成java代码),分解方法代码,也就是显示每个方法具体的字节码 |
-s | 输出内部类型签名 |
-sysinfo | 显示正在处理的类的系统信息 (路径, 大小, 日期, MD5 散列) |
-constants | 显示最终常量 |
在cmd中cd 到class文件所在目录即可执行语句
源代码:
package com.xin.demo.hutooldemo;import cn.hutool.core.io.FileUtil;
import java.io.File;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils;public class demo1FileUtil {private static String baseFolderPath = "C:\\D\\project3\\ruoyi-vue-pro\\yudao-server";private static String exportFolder = "D:\\tableNameFolder";private static String reg = "(a|b)\\.\\w*";public demo1FileUtil() {}public static void main(String[] args) {List<File> fileList = FileUtil.loopFiles(baseFolderPath);FileUtil.mkdir(exportFolder);FileUtil.clean(exportFolder);FileUtil.writeLines(fileList, exportFolder + "\\classList.txt", "utf-8");Set<String> matchTableNameSet = new HashSet();Pattern pattern = Pattern.compile(reg, 2);fileList.stream().forEach((file) -> {List<String> lineList = FileUtil.readLines(file, "utf-8");lineList.stream().forEach((line) -> {Matcher matcher = pattern.matcher(line);if (matcher.find()) {String group = matcher.group();if (!StringUtils.equals(group, "a.")) {matchTableNameSet.add(group);} else {matchTableNameSet.add(group + "表名换行了,类为:" + file);}}});});FileUtil.appendLines(matchTableNameSet, exportFolder + "\\tableNameList.txt", "utf-8");}
}