我如何验证我的应用程序中使用的所有类文件和 Jar 文件都是为 Java 8 编译的?

问题描述 投票:0回答:1

我正在使用 Java 11 并以 Java8 为目标,但发现我所依赖的一些库没有被编译为在 Java 8 中运行。

是否有一个命令可以查看 uber jar,并报告其中使用的所有 Java 版本?

我搜索并找到了日期为 2014 的 Java6(见下文)的答案,所以我正在寻找该答案的更新版本或上面 uber jar 问题的答案。

这是链接

maven javac
1个回答
0
投票

至少有两种方法可以判断给定的库是否与 Java 8 兼容:

很多年前我在类似的情况下做过后者。今天对于一个带阴影的 jar(我相信这只是所有类组合成一个 jar 文件)我可能只写一个小程序将 jar 读取为一个 zip 文件,并为每个名为

.class
的条目检查该条目的字节流以查看该文件的版本号。

也就是说,这不是我建议你做的。它解决了眼前的问题,但真正让您长期受益的是test您的程序!

所以写一些测试。对您使用的每个库进行一些单元测试,以验证它的行为是否符合您的预期(junit 对此很好),然后使用您的目标 Java 运行它!任何现代 IDE 都可以被告知添加特定的 JVM 并将其用于您的测试。如果你使用 Github,你甚至可以使用 GitHub 操作来自动测试它。

这将以多种方式使您受益。当升级到最新版本时,您会被告知 API 是否因任何原因中断。您知道您的代码在目标平台上按预期运行。你为将来记录你为什么使用这个库以及你期望它做什么。

© www.soinside.com 2019 - 2024. All rights reserved.