在运行 Java 程序和在 Java 版本 1.6 和 1.7 中编译的相关库(我使用 1.7 编译,而一些库使用 1.6 编译)并运行整个程序时,我会遇到任何问题吗? 1.7 JRE?
最佳答案
正如已经回答的那样,您大部分是安全的,大多数产品和 3rd 方库都可以正常工作。然而,确实存在非常罕见的情况,二进制不兼容(使用旧 JDK 编译的类文件将无法在新 JVM 中运行的情况)在 JDK 版本之间引入。
Oracle Java 版本间不兼容官方列表:
- in Java SE 9 since Java SE 8
- in Java SE 8 since Java SE 7
- in Java SE 7 since Java SE 6
- in Java SE 6 since Java SE 5.0
- in Java SE 5.0 since Java SE 1.4.2
兼容性工具
与JDK 9一起打包,有一个工具叫jdeprscan 这将验证兼容性,列出代码中不再使用的 API 并建议替代方案(!)。您可以指定目标 JDK 版本(适用于 JDK 9、8、7 和 6),它将列出特定于您的目标版本的不兼容性。
对于库的补充说明:
一个合理的经验法则是为您的软件目标的 JRE 版本使用最新的稳定版本库。显然,您会发现这条规则的许多异常(exception)情况,但一般来说,公开可用的库通常的稳定性会随着时间的推移而增加。
在更改依赖项的版本时,自然必须考虑 API 兼容性和 版本控制。
同样,大多数流行的依赖项都会有网页,这些信息应该是可用的。
但是,如果您使用的东西有点晦涩难懂,您可以辨别出哪些 JRE 是您的依赖项中编译的类。
Here is a great answer on how to find out class version .您可能需要先解压缩 JAR 文件。
关于java - 较新的 JRE 版本可以运行使用较旧 JDK 版本编译的 Java 程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10895969/