Java 库的 Java 兼容性

Java compatibility of Java library

提问人:waffledood 提问时间:11/9/2023 最后编辑:Mark Rotteveelwaffledood 更新时间:11/9/2023 访问量:92

问:

如何确定 Java 库与哪个 Java 版本兼容?

作为参考,我需要升级以下库:

// build.gradle

dependencies {
  compile('javax.mail:mail:1.4')
  compile group: 'org.apache.velocity', name: 'velocity', version: '1.7'
}

我的 Spring Boot 项目使用 Java 8。

我想知道这两个库的更新版本是否仍支持 Java 8。

现在,我正在查看 JavaMail API 的 mvnrepository 页面,但我没有看到任何关于支持哪个 Java 版本的内容。

Java Gradle

评论

2赞 Holger 11/9/2023
你说的是哪个“新版本”?正如您在自己链接的页面上看到的那样,自 2006 年以来没有任何活动。
2赞 Generous Badger 11/9/2023
没有通用的方法来表示这种兼容性,所以你的两个选项实际上只是一个。阅读库的文档/发行说明或 b.)尝试一下,看看它是否崩溃。一个一般的经验法则:次要版本和补丁版本(即 1.4->1.5 或 1.4.1 -> 1.4.4)往往不会破坏与 JRE 的兼容性。
1赞 Holger 11/9/2023
@JoachimSauer所以 OP 应该查看该版本的页面。这并不重要,因为它仍然比 Java 8 更旧......
1赞 Holger 11/9/2023
@MarkRotteveel我想,OP 在该页面上没有找到 1.6.x 版本
2赞 Mark Rotteveel 11/9/2023
@Holger 这是因为 Oracle 在他们所有的智慧中一直在更改工件名称而没有定义重新定位工件,或者 1.4 的发布可能是一个错误,因为只有规范应该在 下,而(原始)参考实现在 groupId 下,例如 或者,现在.最重要的是,mvnrepository.com 不是一个权威的参考,它只是来自各种 Maven 存储库的信息的聚合器。javax.mail:mailjavax.mailcom.sun.mailcom.sun.mail:jakarta.mailcom.sun.mail:javax.mailorg.eclipse.angus:angus-mail

答:

3赞 Mark Rotteveel 11/9/2023 #1

如果您使用的是 Spring Boot 2.7,则应将该依赖项替换为:javax.mail:mail:1.4

<dependency>
  <groupId>com.sun.mail</groupId>
  <artifactId>jakarta.mail</artifactId>
</dependency>

或者对于 Gradle:

compile('com.sun.mail:jakarta.mail')

(没有版本,Spring Boot 会为您管理它,对于 Spring Boot 2.7.19,它将解析为 。com.sun.mail:jakarta.mail:1.6.7

JakartaMail/JavaMail 1.6.x 支持 Java 7 及更高版本。

如果升级到 Spring Boot 3.x(需要 Java 17),则需要使用

<dependency>
  <groupId>org.eclipse.angus</groupId>
  <artifactId>angus-mail</artifactId>
</dependency>

或者对于 Gradle:

compile('org.eclipse.angus:angus-mail')

转到Spring Boot 3.x还涉及API命名空间的更改(from to ),因此需要对代码进行一些更改。javax.mailjakarta.mail

对于 Velocity,您可能需要升级到 2.3 版(支持 Java 8 或更高版本),请参阅 Apache Velocity 站点,但我不确定从 1.7 版升级到 2.3 版涉及什么,因此这可能是很多工作(例如,请参阅 2.0 文档从早期版本升级;另请查看 2.3 文档了解 2.1, 2.2 和 2.3 更改)。