java_查看jar包的JDK版本
Java: 查看jar包的JDK版本
今天突然发现新编译的jar包在AS跑不起来了,报错如下:
class file has wrong version 61., should be 55.0
搜了下相关资料,发现是编译的JDK版本过高导致的,
其实就是在Gradle file 中修改了这两行code 所致:
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
这样的话,会使用JDK17
去编译jar包。所以只需要把上面的Java Version 修改为比编译的版本低就行了,比如上述报错的编译环境是JDK11
(class file version: 55)。
查看编译的jar包的JDK version可以通过下列途径:
一. 通过版本
通常在使用Java程序时,需要对JDK版本进行核对,JDK构建版本不等于执行的运行版本,需要通过执行类来辨别
-
通过反编译工具jd-gui查看清单文件
-
通过编译的class文件来查看文件信息
二. 通过十六进制
随便将报错的jar包解压,找到任意一个class文件:
使用十六进制文本编辑器打开:
找到主版本号(major version)的显示位置,可以看到显示的是 00 3D
, 换算成十进制就是 61
, 也就是说,该class file 是通过java17 编译生成的。
Tips: minor version 与 major version 都是以大端格式进行存储的。
三. Java各版本的major version
下表是java各版本的major version:
Java | Major version |
---|---|
20 | 64 |
19 | 63 |
18 | 62 |
17 | 61 |
16 | 60 |
15 | 59 |
14 | 58 |
13 | 57 |
12 | 56 |
11 | 55 |
10 | 54 |
9 | 53 |
8 | 52 |
7 | 51 |
6 | 50 |
5 | 49 |
1.4 | 48 |
1.3 | 47 |
1.2 | 46 |
1.1 | 45 |
1.0.2 | 45 |
参考链接
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
2018-08-31 C/C++/Java中的volatile关键字
2018-08-31 C++中的mutable关键字
2018-08-31 C++中的typedef typename 作用