我目前正在考虑将 JSR-310 的一小部分添加javax.time.Duration
到我们的库中。
目前这工作得很好。
但是 JSR-310 计划集成到 Java 8 中!在 Java 8 上执行我们的应用程序时,如果javax.time.Duration
标准库中同时存在一个类,并且我们的 jar 文件附带了同一个类,会发生什么情况?
其中一个课程会被默默忽略吗?(哪一个?)当 Java 8 VM 尝试从我们的库中加载类时会出错吗?
我需要注意任何兼容性问题吗?
我目前正在考虑将 JSR-310 的一小部分添加javax.time.Duration
到我们的库中。
目前这工作得很好。
但是 JSR-310 计划集成到 Java 8 中!在 Java 8 上执行我们的应用程序时,如果javax.time.Duration
标准库中同时存在一个类,并且我们的 jar 文件附带了同一个类,会发生什么情况?
其中一个课程会被默默忽略吗?(哪一个?)当 Java 8 VM 尝试从我们的库中加载类时会出错吗?
我需要注意任何兼容性问题吗?
JVM 遵循类路径来确定要加载的类。如果有多个,后面的类将被忽略。
对于 JVM 本身包含的类,这些是在类路径之前搜索的引导类路径的一部分。
除非 API 发生重大变化,否则您不应该注意到差异,并且您的额外 JAR 将在 Java 8 中有效地被忽略。
现在可以澄清这个问题。
JDK1.8 类将位于java.time
命名空间中,并且不能被覆盖(因为它们深入Java 的核心)。
有一个backport 项目可用,它允许在 JDK1.7 上使用非常相似的 API。那使用org.threeten.bp
命名空间。这个想法是,向前推进到 JDK1.8 将只需要在大多数情况下重命名包。
javax.time
名称空间不再使用。