首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpringVersion4.3.20与Java 11一起工作吗?

SpringVersion4.3.20与Java 11一起工作吗?
EN

Stack Overflow用户
提问于 2019-02-18 08:31:03
回答 3查看 6.3K关注 0票数 4

当涉及到支持的Spring4.3.20的java版本时,我感到困惑。将Spring4.3.20项目更新到Java 11没有任何问题。我所有的测试都很好,webapp启动了,所有需要字节码的Spring特性--比如@Cacheable --都能工作。这怎么可能?据我所知,我应该更新到Spring5+。我检查了生成的.class-files的maven设置和字节码版本中的语言级别,它们确实使用major version: 55

我遗漏了什么?

我用Java 11构建,用Java 11启动本地tomcat,我检查了所有设置,并使用visualvm验证tomcat确实与Java 11一起运行。

这是javap的输出

EN

回答 3

Stack Overflow用户

发布于 2019-02-18 09:50:53

Spring5.1支持Java 11,早期版本不支持。请参阅Spring框架版本

JDK版本范围

  • Spring框架5.1.x: JDK 8-12
  • SpringFramework5.0.x: JDK 8-10
  • SpringFramework4.3.x: JDK 6-8

SpringFramework5.x中的新内容是什么?

5.1版的新内容是什么? 一般核心修订

  • 基础设施:
    • 在类路径和模块路径上对JDK 11的无警告支持。

4.3.x在Java 11上工作可能只是意味着到目前为止你还很幸运(不使用与Java 11不兼容的东西)。而且,Java在向后兼容性方面很好,即使是自Java 9以来移除的东西或有意向后兼容的更改,Spring中真正损坏的东西也完全有可能是非常小和模糊的。

尽管如此,如果作者说Java兼容性只在比您使用的更晚的版本中得到保证,我就不会使用与Java 11一样庞大的库集。如果您想在Java 11中使用Spring,请升级到Spring5.1。

票数 4
EN

Stack Overflow用户

发布于 2019-02-18 08:37:13

记住:测试只能证明错误的存在性(),而不是它们的缺失。

根据他们发布的博客的一些评论,4.3.20实际上与Java 11“不兼容”。

另一方面,spring是一个巨大的框架。因此,简单的答案可能是:只要你不遇到不起作用的区域,它就能工作。

请记住:任何版本N的JDK都可以为具有旧版本N的字节码运行字节码。

票数 2
EN

Stack Overflow用户

发布于 2019-02-18 08:43:27

在社区中,兼容性似乎是一个常见的问题,所以在Spring文档中有一个答案(有点):https://spring.io/blog/2015/04/03/how-spring-achieves-compatibility-with-java-6-7-and-8

基本上,Spring代码库本身甚至不使用Java 7的特性,因此它与6兼容。

至于字节码转换,我认为JVM保持了一定程度的兼容性,因为它的规范允许框架特性的某些工作。

但是,如果官方文档说它是不兼容的,那么您应该依赖这个意外,因为其他特性可能无法工作或与补丁和次要版本中断。

P.S.您还提到了可以用来操作字节码的cglib,但它实际上并不是必需的。它确实生成Java代码,甚至在新JVM版本中总是向后兼容的字节码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54743146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档