IntelliJ IDEA :decompiled.class file bytecode version:52.0(java 8) ,open source file.

本文详细解析了IntelliJ IDEA中.class与.java文件的区别,并介绍了如何利用IDEA进行源码阅读,包括如何查看带有完整注释的源代码及反编译过程中的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IntelliJ IDEA使用教程 (总目录篇)

引入第三方jar包或者查看Java源码的时候,经常遇到问题如下:
decompiled.class file bytecode version:52.0(java 8) ,   open source file.
翻译一下上面的意思:(反编译 .class文件中的字节码 到Java 8 版本)   打开源文件
其实这个时候,你就得注意一下,你看到文件是 .class文件,还是 .java文件。
然后我就详细的总结了一下,二者的差别:

1.先是理论知识:
.java为Java的源文件后缀,编写的代码需要写在.java文件中。
而.class是字节码文件,是.java源文件通过javac命令编译后生成的文件。
Java虚拟机就是去运行.class文件从而实现程序的运行。
jdk自带 .class 文件,在运行的时候,没必要每次都去把 .java 文件再编译一遍成 .class文件,去运行。
也是为了加快代码执行速度。

2.具体的 .class文件和 .java文件的具体对比图,如下:

这个.java文件和我们自己写的.java文件一样,是可以打开看内容的。下面的jar里面的源码就打不开啦。

再看如下的2张图。继续理解一下上面的意思。

注意
现在看到的是.class文件,我们知道自己的写的.java文件会经过编译器编译然后变成.class文件,然后才可以运行的。这可以看到.class文件内部的代码,估计都是编译器的功劳。但是可惜的是,丁点儿注释都没有。我记得eclipse里面这个时候,好像就是直接弹框让你打开源文件来着。

注意
现在看到的是.java文件,和我们平时写的Java文件是一样样的。就是直接打开那个xxx-sources.jar的结果。里面注释啥的都有。
这2个图对比,就可以发现。一般jar包是有2个类型的。结尾带-sources的和不带的。二者的差别,就如上所描述的。

 

当时我记录这篇文章是干啥的呢?

解释一下右上角的那个提示是干啥的,这个idea可以把class文件直接给反编译成Java文件,里面的方法变量啥的都有,但是就是没的注释,什么情况下才能完美反编译呢,就是你本地的代码仓库里面有对应jar的source文件,这个时候,你在看源码的时候,idea可以根据class文件找到source文件里面对应的Java文件,这个Java文件,里面代码才是带着完整注释的文件。若是idea不能智能的找到对应的source文件jar,你可以手动的chose source,前提是你本地得有source jar。要是你本地压根儿就没得source文件,比如你使用的这个jar是别人非开源的,在代码仓库是没有对应source.jar的,那可不就是看不到一个完美的带注释的Java文件,看到的只是一个简单的经过反编译的class文件,里面的方法名和参数名可能就不那么能表达方法或者属性的意思了。

一般情况下,你新打开到一个源码的jar的时候,本地是没的source的,你就点download,下载source,要是能下载成功,那就下载下来了,就可以看到带注释的源码了,要是下载失败,那估计就看不到完整的source Java文件了,只能讲究看一下idea粗糙反编译的文件了。没的注释的那种。

上面的就是干了个这事儿啊。没别的了。

### 反编译的 `.class` 文件及其字节码版本 51.0 的相关信息 反编译后的 `.class` 文件通常是由 Java 编译器生成的目标文件,其中含了 JVM(Java 虚拟机)可以执行的字节码。提到的 `bytecode version: 51.0 (Java 7)` 表明该类文件是在 Java 7 或更高版本下编译的[^1]。 #### 字节码版本号的意义 JVM 使用特定的版本号来表示 `.class` 文件的兼容性目标运行环境。对于版本号 `51.0` 来说,它明确指向了 Java SE 7 版本的标准。这意味着任何尝试加载此 `.class` 文件的 JVM 都必须支持至少 Java 7 所定义的功能集语法特性。 如果开发环境中缺少相应的源代码或者调试信息,则可能会遇到提示类似于 “Source for 'Android API 23 Platform' not found”,这表明当前项目依赖于 Android 平台中的某些库资源,而这些资源的具体实现可能未被正确映射到 IDE 中设置好的路径上。 为了更好地处理这种情况并查看实际的`.class`文件内容,可以通过如下方式解决: 1. **IDE 设置调整**: 如建议所示,在 IntelliJ IDEA 或其他基于 JetBrains 的工具里通过导航至菜单项 File -> Settings -> Appearance & Behavior -> System Settings -> Android SDK 进行配置更新,从而确保能够找到匹配的平台源码。 2. **使用反编译插件或软件**: - 在现代集成开发环境(IDEs),如 IntelliJ IDEA Ultimate Edition Android Studio 提供内置功能可以直接浏览已安装模块对应的解压版 jar 内的 class 文件结构; - 第三方工具例如 JD-GUI、CFR Decompiler 等也可以帮助分析单独提取出来的二进制形式 Class Files。 以下是利用第三方 Python 库读取基本属性的一个简单例子: ```python from jvm import read_class_file def inspect_java_class(file_path): """Inspect the basic attributes of a given Java .class file.""" with open(file_path, "rb") as f: cf = read_class_file(f) print("Class Name:", cf.this_class.name.value) print("Byte Code Version:", cf.version) inspect_java_class('example.class') ``` 上述脚本展示了如何借助专门解析 Java 类文件格式的库获取基本信息,括但不限于名称空间与字节码级别等元数据字段.
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值