zoukankan      html  css  js  c++  java
  • 001-Eclipse、idea集成javap查看字节码、javap说明

    一、概述

      分析java语言特性的一个好帮手是使用javap工具查看java编译后的字节码,如何在eclipse中配置javap工具快速查看java字节码。

    二、Eclipse集成javap查看字节码

      代码工程用的maven结构。默认java编译后的class文件是放在: 工程目录/target/classes 下的

      首先进入run -> External Tool -> External Tools Configurations 然后在Program 节点选定后右键点击“New” 创建一个新的扩展工具配置。

         

      然后按照如下图所示配置即可:

        

      Location:指定javap的绝对路径。

      Working Directory: ${project_loc}变量返回工程所在的绝对路径。

      Arguments: 注意这里的参数配置,-classpath 指定的是java代码编译后class文件存放的目录,这里我们配置的是相对于工程根目录而言,class文件的相对目录路径,-c参数后面的值是指定要查看哪个文件的字节码,${java_type_name} 变量返回你选取的类文件名。使用javap工具之前一定得获取class文件,因此先让你的代码能正常run一遍把。

      如果你的工程不是maven的目录结构,那么只用按照本文配置修改classpath参数的值指定你的class文件存放的相对路径即可。使用javap工具的时候切记需要激活你当前java的代码编辑窗口才能使用。
    参数verbose
      示例
        普通bin项目:-verbose -classpath bin -c ${java_type_name}
        maven项目:-verbose -classpath target/test-classes -c ${java_type_name}

    三、idea配置查看字节码

    1、打开File→Settings→Tools→External Tools;

    2、右侧添加,配置如下:

      

      name:任意

      Program:javap路径【D:ProgramFilesJavajdk1.8.0_121injavap.exe】

      Parameters:-v $FileClass$【同上介绍一致】   

      Working direstory:$OutputPath$

    使用:代码上右键→External Tools选择即可   

    四、javap参数说明

    查看详细信息: 

    javap -help

    详细信息

    用法: javap <options> <classes>
    其中, 可能的选项包括:
      -help  --help  -?        输出此用法消息
      -version                 版本信息
      -v  -verbose             输出附加信息
      -l                       输出行号和本地变量表
      -public                  仅显示公共类和成员
      -protected               显示受保护的/公共类和成员
      -package                 显示程序包/受保护的/公共类
                               和成员 (默认)
      -p  -private             显示所有类和成员
      -c                       对代码进行反汇编
      -s                       输出内部类型签名
      -sysinfo                 显示正在处理的类的
                               系统信息 (路径, 大小, 日期, MD5 散列)
      -constants               显示最终常量
      -classpath <path>        指定查找用户类文件的位置
      -cp <path>               指定查找用户类文件的位置
      -bootclasspath <path>    覆盖引导类文件的位置

    一般常用的是-v -l -c三个选项。
    javap -v classxx,不仅会输出行号、本地变量表信息、反编译汇编代码,还会输出当前类用到的常量池等信息。
    javap -l 会输出行号和本地变量表信息。
    javap -c 会对当前class字节码进行反编译生成汇编代码。

  • 相关阅读:
    springboot、监听器
    springboot、拦截器
    Thymeleaf模板引擎
    springboot-banner.txt
    springboot,swagger2
    springboot 热部署
    判断是否为微信环境下打开的网页
    后台接收json数据
    ios 面试题
    iOS 适配问题
  • 原文地址:https://www.cnblogs.com/bjlhx/p/8855665.html
Copyright © 2011-2022 走看看