千家信息网

怎么使用IDEA查看java文件编译后的字节码内容

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要介绍"怎么使用IDEA查看java文件编译后的字节码内容"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"怎么使用IDEA查看java文件编译后的字节
千家信息网最后更新 2025年01月18日怎么使用IDEA查看java文件编译后的字节码内容

这篇文章主要介绍"怎么使用IDEA查看java文件编译后的字节码内容"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"怎么使用IDEA查看java文件编译后的字节码内容"文章能帮助大家解决问题。

首先编写一个java类 StringDemo1.java

public class StringDemo1 {   public static void main(String[] args) {       String str1 = "aaa" + "bbb";       System.out.println(str1);       String str2 = "ccc";       str2 += "ddd";       System.out.println(str2);   }}

经过编译后,生成 StringDemo1.class文件

使用IDEA查看编译之后的文件内容:

//// Source code recreated from a .class file by IntelliJ IDEA// (powered by Fernflower decompiler)//package jdk.java.lang.string;public class StringDemo1 {   public StringDemo1() {   }   public static void main(String[] args) {       String str1 = "aaabbb";       System.out.println(str1);       String str2 = "ccc";       str2 = str2 + "ddd";       System.out.println(str2);   }}


可以看出内容已经是经过IDEA反编译之后的了,并不能看到字节码内容。

使用jclasslib反编译工具

在IDEA中搜索插件jclasslib bytecode viewer,然后进行安装,重启IDEA。

再次打开StringDemo1.java文件,在IDEA菜单栏上打开View -> Show Bytecode,即可以看到字节码文件内容:

// class version 52.0 (52)// access flags 0x21public class jdk/java/lang/string/StringDemo1 { // compiled from: StringDemo1.java // access flags 0x1 public ()V  L0   LINENUMBER 8 L0   ALOAD 0   INVOKESPECIAL java/lang/Object. ()V   RETURN  L1   LOCALVARIABLE this Ljdk/java/lang/string/StringDemo1; L0 L1 0   MAXSTACK = 1   MAXLOCALS = 1 // access flags 0x9 public static main([Ljava/lang/String;)V  L0   LINENUMBER 11 L0   LDC "aaabbb"   ASTORE 1  L1   LINENUMBER 12 L1   GETSTATIC java/lang/System.out : Ljava/io/PrintStream;   ALOAD 1   INVOKEVIRTUAL java/io/PrintStream.println (Ljava/lang/String;)V  L2   LINENUMBER 15 L2   LDC "ccc"   ASTORE 2  L3   LINENUMBER 16 L3   NEW java/lang/StringBuilder   DUP   INVOKESPECIAL java/lang/StringBuilder. ()V   ALOAD 2   INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;   LDC "ddd"   INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;   INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String;   ASTORE 2  L4   LINENUMBER 17 L4   GETSTATIC java/lang/System.out : Ljava/io/PrintStream;   ALOAD 2   INVOKEVIRTUAL java/io/PrintStream.println (Ljava/lang/String;)V  L5   LINENUMBER 18 L5   RETURN  L6   LOCALVARIABLE args [Ljava/lang/String; L0 L6 0   LOCALVARIABLE str1 Ljava/lang/String; L1 L6 1   LOCALVARIABLE str2 Ljava/lang/String; L3 L6 2   MAXSTACK = 2   MAXLOCALS = 3}

JDK版本映射

JDK版本class版本
J2SE 852
J2SE 751
J2SE 6.050
J2SE 5.049
JDK 1.448
JDK 1.347
JDK 1.246
JDK 1.145

关于"怎么使用IDEA查看java文件编译后的字节码内容"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

0