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

在这里插入图片描述

位置: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");
    }
}

1. javap -version 版本信息

在这里插入图片描述

2. javap -verbose 输出附加信息

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

7. javap -constants 显示最终常量

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值