【发布时间】:2017-04-13 10:30:06
【问题描述】:
我知道交叉编译的 Java 代码不能使用新的语言功能,IE 没有 Java 8 中的 lambda 或 Java 7 中的 try-with-resources 等功能。
但是是否可以引用新 Java 版本中添加的新类?
假设我有一个支持 Java 6+ 的库,并且我有一些接受日期作为参数的方法。
对于 Java 6,我提供了一个使用 java.util.Date 的 API,但对于 Java 8 的用户,我想提供使用 java.time.Instant 的选项。
我希望 Java 6 用户能够使用该库,但如果他们尝试使用 Instant 方法会遇到 ClassNotFoundException。
是否有一种可接受的方式来做这样的事情,以及如何使用 Gradle 或 Maven 等常用构建工具来实现?
给出的例子是人为的,请不要给出处理时间的替代方法的答案。
【问题讨论】:
-
通常,如果您的库与 Java 6 一起使用,则使用 Java 6 JDK 来创建和编译库。我知道您的示例是人为的,但 java.util.Date 仍然存在于 Java 8 中。您是正确的,如果您在 Java 6 JRE 上运行 Java 8 类文件,则可能会出现 ClassNotFoundException。