Spring 3.2.x 和 Java 8
Spring 3.2.x with Java 8
我们目前正在使用 spring 3.2.9。我们正在考虑将其升级到更新版本。当我查看文档时,它说
Along with 4.0 M1, we’ve released Spring Framework 3.2.3, containing
fixes for recently reported issues but also coming with OpenJDK 8 runtime
support. Spring Framework 3.2.x will support deployment on JDK 8 runtimes
for applications compiled against JDK 7 (with -target 1.7) or earlier.
这是否意味着我无法在 Java 8 上编译?
如果我想用 Java 8 编译,我应该使用 spring 版本 4.0.x 吗?
早于 4.0M1 的 Spring 框架版本不适用于为 Java 8.
编译的 classes
Spring 尝试通过读取 class 文件来代理这些 classes,如果它们是 "too new",这将不起作用。如果您的 @Service
classes 是使用 Java 8 作为目标编译的,Spring 将无法在启动时加载 classes。
这意味着如果您想要以 Java 8 为目标(并使用 lambda、默认实现等),则必须升级到 Spring 4.x.x。
我几个月前在一个使用 Spring 3.x.x.
的项目中遇到了这个问题
从 3.2.9+ 开始,在 3.2.x 行中有对 JDK8 的最大支持。
有关 3.2.10 中字节码支持的改进,请参阅 SPR-11656 for initial support in 3.2.9 and SPR-11979。请注意评论中解释的支持限制。
全面支持JDK8,请升级到Spring 4.x - 有一个dedicated wiki page explaining the upgrade path,Spring团队努力使升级体验真正简单。
根据我的观察,只要不使用新的 java8 语法,您实际上可以将 spring 3 与 Java 8 中编译的代码一起使用 在扫描的路径中 (如 lambda)。
因此,您可以使用新的 API(流...),但不能使用新的语法(lambdas...)。
当我尝试时,我以 org.springframework.beans.factory.BeanDefinitionStoreException 之类的启动错误告终:无法读取候选组件 class
我们目前正在使用 spring 3.2.9。我们正在考虑将其升级到更新版本。当我查看文档时,它说
Along with 4.0 M1, we’ve released Spring Framework 3.2.3, containing fixes for recently reported issues but also coming with OpenJDK 8 runtime support. Spring Framework 3.2.x will support deployment on JDK 8 runtimes for applications compiled against JDK 7 (with -target 1.7) or earlier.
这是否意味着我无法在 Java 8 上编译?
如果我想用 Java 8 编译,我应该使用 spring 版本 4.0.x 吗?
早于 4.0M1 的 Spring 框架版本不适用于为 Java 8.
编译的 classesSpring 尝试通过读取 class 文件来代理这些 classes,如果它们是 "too new",这将不起作用。如果您的 @Service
classes 是使用 Java 8 作为目标编译的,Spring 将无法在启动时加载 classes。
这意味着如果您想要以 Java 8 为目标(并使用 lambda、默认实现等),则必须升级到 Spring 4.x.x。
我几个月前在一个使用 Spring 3.x.x.
的项目中遇到了这个问题从 3.2.9+ 开始,在 3.2.x 行中有对 JDK8 的最大支持。
有关 3.2.10 中字节码支持的改进,请参阅 SPR-11656 for initial support in 3.2.9 and SPR-11979。请注意评论中解释的支持限制。
全面支持JDK8,请升级到Spring 4.x - 有一个dedicated wiki page explaining the upgrade path,Spring团队努力使升级体验真正简单。
根据我的观察,只要不使用新的 java8 语法,您实际上可以将 spring 3 与 Java 8 中编译的代码一起使用 在扫描的路径中 (如 lambda)。
因此,您可以使用新的 API(流...),但不能使用新的语法(lambdas...)。
当我尝试时,我以 org.springframework.beans.factory.BeanDefinitionStoreException 之类的启动错误告终:无法读取候选组件 class