Java is backward compatible, but why we need to upgrade many libraries when we upgrade jdk from 1.6 to 1.8?(Java是向后兼容的,但是为什么我们在将jdk从1.6升级到1.8的时候需要升级很多库呢?)
问题描述
最近,我们在我的一个 Java 项目中将 Jdk 版本从 1.6
升级到 1.8
.但是有一些编译或运行时错误,所以我不得不升级一些库:
Recently, we upgrade the Jdk version from 1.6
to 1.8
in one of my Java project. But there are some compilation or runtime errors, so I have to upgrade some libraries:
- gradle:
1.9
到1.10
- spring:
3.x
到4.x
- gradle:
1.9
to1.10
- spring:
3.x
to4.x
那是因为他们使用的是 ASM 的一些早期版本,但仅从 5.x
That because they are using some early versions of ASM, but which supports jdk 1.8 only from 5.x
Java说是向后兼容,但是为什么原版的库不能直接用jdk 1.8呢?
Java said it is backward compatible, but why the original versions of libraries can't work with jdk 1.8 directly?
推荐答案
因为 ASM 是一个对 Java 字节进行操作的工具-代码.并且改变了字节码格式以引入新功能.因此,您必须升级工具以支持新的字节码.
Because ASM is a tool that operates on the Java byte-code. And the byte-code format changed to introduce new features. As such, you had to upgrade the tool to support the new byte-code.
请注意,使用旧版 JDK 编译的软件并不总是适用于新版 Java.例如,enum
在 JDK 的早期版本中不是关键字.
Note, that software compiled with an older version of the JDK does not always work with newer versions of Java. For example, enum
was not a keyword in early versions of the JDK.
这篇关于Java是向后兼容的,但是为什么我们在将jdk从1.6升级到1.8的时候需要升级很多库呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Java是向后兼容的,但是为什么我们在将jdk从1.6升级到1.8的时候需要升级很多库呢?
- 在 Java 中,如何将 String 转换为 char 或将 char 转换 2022-01-01
- 转换 ldap 日期 2022-01-01
- GC_FOR_ALLOC 是否更“严重"?在调查内存使用情况时? 2022-01-01
- java.lang.IllegalStateException:Bean 名称“类别"的 BindingResult 和普通目标对象都不能用作请求属性 2022-01-01
- 未找到/usr/local/lib 中的库 2022-01-01
- 获取数字的最后一位 2022-01-01
- 如何指定 CORS 的响应标头? 2022-01-01
- 如何使 JFrame 背景和 JPanel 透明且仅显示图像 2022-01-01
- 将 Java Swing 桌面应用程序国际化的最佳实践是什么? 2022-01-01
- Eclipse 的最佳 XML 编辑器 2022-01-01