在个依赖升级的过程中,snyk建议我将guava升级到32.0.0-jre这个版本,最后测试出来这个版本的guava只能部分兼容jdk1.8;
查看guava版本兼容jdk的版本,可以通过以下方式:
1.windows下,按win+r输入cmd进入;
2.导航到JAR所在的目录,就是guava所在的路径
cd C:\path\to\your\jar
将 C:\path\to\your\jar
替换为包含 Guava JAR 文件的实际路径。
3.解压 JAR 文件: 使用 jar
命令(Java SDK 自带)解压 JAR 文件:
jar xf guava-32.0.0-jre.jar
注意:确保你已经安装了 Java JDK,并且 jar
命令可以在命令提示符中使用;
4.在第三步完成之后,需要去检查类文件版本;去验证其中的类文件是否是用 JDK 11 或更高版本编译的;
方法如下:
1.找到一个类文件:解压后会得到一个包含多个目录和类文件的文件夹结构。你可以随便选择一个 .class
文件,比如 SettableFuture.class
或 ListenableFuture.class;路径类似:
com/google/common/util/concurrent/SettableFuture.class
2.运行javap命令:使用 javap -verbose
查看该类文件的版本信息。在命令行中执行以下命令:
javap -verbose com/google/common/util/concurrent/SettableFuture.class | findstr "major version"
需要注意的是,路径需要换成你的实际路径;
其中
javap -verbose
:反编译类文件并显示详细信息。findstr "major version"
:过滤输出,只显示类文件的 "major version"
3.输出的版本号
ps:这个是我在确认32.0.0-jre时得到的结果,结合我的实际情况表明,
Guava 库中部分类保持了向后兼容:Guava 库可能将一些类(特别是核心工具类或不依赖新特性或模块的类)编译为 JDK 8 兼容的字节码(major version 52),以便与更广泛的 Java 版本兼容。这意味着 Guava 的一部分代码仍然可以在 JDK 8 上运行。
minor version: 0
major version: 52
- major version 52:表示类文件是用 JDK 8 编译的,兼容 JDK 1.8。
- major version 55:表示类文件是用 JDK 11 编译的,不兼容 JDK 1.8。
- major version 57:表示类文件是用 JDK 13 编译的,依此类推。
最后我将guava 32.0.0-jre回退到了guava 30.1.1-jre版本;
ps:自己学习的一些记录,为自己参考;
标签:文件,jre,jdk,JDK,major,version,版本,guava From: https://blog.csdn.net/weixin_56882678/article/details/143617862