我正在尝试将Maven应用程序迁移到Java11 (OpenJDK 11)。
首先,我希望通过release编译器选项编译我的Java8项目,并将其用于目标8。
编译工作良好,但是在运行我的JUnit测试时,测试会出现各种问题(Maven MyBatis tests fail when running Java 8 project compiled with Java 11)。
为了消除变量,我简化了流程,用Java 8编译器编译了应用程序(相对于Java 11,针对Java 8),然后用Java 11运行时运行我的测试--我仍然在经历异常。
我的理解是,您应该能够使用Java 11运行Java 8应用程序,因为它应该是向后兼容的。
我遗漏了什么?
发布于 2021-09-23 15:41:31
我的理解是,您应该能够使用Java11运行Java8应用程序,因为它应该是向后兼容的。我遗漏了什么?
这是错误的。Java只是承诺不会轻易破坏兼容性。他们对“轻微”的解释有些不同,特别是在8到9的过渡时期(这一转变打破了很多,真的)。
有几个众所周知的问题。张贴错误,你可能会得到一些洞察力。无论如何,不,没有这样的保证:即使在用--release 8编译时。在这里,编译它的东西听起来也是完全不相关的--唯一决定您是否得到错误的变量是在JDK8或JDK11上运行生成的类文件。
https://stackoverflow.com/questions/69302560
复制相似问题