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