文章目录
- 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");
}
}