[JDK工具-2] javap 类文件解析工具-帮助理解class文件,了解Java编译器机制

[JDK工具-2] javap 类文件解析工具-帮助理解class文件,了解Java编译器机制_第1张图片

文章目录

  • 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

参数 说明
-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");
    }
}

1. javap -version 版本信息

在这里插入图片描述

2. javap -verbose 输出附加信息

[JDK工具-2] javap 类文件解析工具-帮助理解class文件,了解Java编译器机制_第2张图片

3. javap -l 显示行号和局部变量列表

[JDK工具-2] javap 类文件解析工具-帮助理解class文件,了解Java编译器机制_第3张图片

4. javap -c 对代码进行反汇编(或叫反编译生成汇编代码,一般说反编译是生成java代码),分解方法代码,也就是显示每个方法具体的字节码

[JDK工具-2] javap 类文件解析工具-帮助理解class文件,了解Java编译器机制_第4张图片

5. javap -s 输出内部类型签名

[JDK工具-2] javap 类文件解析工具-帮助理解class文件,了解Java编译器机制_第5张图片

6. javap -sysinfo 显示正在处理的类的系统信息 (路径, 大小, 日期, MD5 散列)

[JDK工具-2] javap 类文件解析工具-帮助理解class文件,了解Java编译器机制_第6张图片

7. javap -constants 显示最终常量

[JDK工具-2] javap 类文件解析工具-帮助理解class文件,了解Java编译器机制_第7张图片

你可能感兴趣的:(JDK工具,java,python,开发语言)