当jar附带的类被添加到Java标准库时会发生什么?

当jar附带的类被添加到Java标准库时会发生什么?,java,time,compatibility,java-8,jsr310,Java,Time,Compatibility,Java 8,Jsr310,我目前正在考虑将JSR-310的一小部分,javax.time.Duration添加到我们的库中 目前,这一切都很好 但是JSR-310计划集成到Java8中!在Java8上执行应用程序时,如果标准库中既有javax.time.Duration类,又有jar文件附带的同一类,会发生什么情况 其中一个类是否会被静默忽略?(哪一个?) 当Java8VM试图从我们的库中加载类时会出现错误吗 是否有任何需要注意的兼容性问题?JVM遵循类路径来确定要加载的类。如果有多个类,则后面的类将被静默忽略 对于JV

我目前正在考虑将JSR-310的一小部分,
javax.time.Duration
添加到我们的库中

目前,这一切都很好

但是JSR-310计划集成到Java8中!在Java8上执行应用程序时,如果标准库中既有
javax.time.Duration
类,又有jar文件附带的同一类,会发生什么情况

其中一个类是否会被静默忽略?(哪一个?) 当Java8VM试图从我们的库中加载类时会出现错误吗


是否有任何需要注意的兼容性问题?

JVM遵循类路径来确定要加载的类。如果有多个类,则后面的类将被静默忽略

对于JVM本身包含的类,它们是在类路径之前搜索的bootclasspath的一部分


除非API中有突破性的变化,否则您不应该注意到差异,Java 8将有效地忽略额外的JAR。

现在可以澄清这个问题

JDK1.8类将位于
java.time
命名空间中,并且不能被重写(因为它们深入java的核心)

一个非常类似的API可以在JDK1.7上使用。它使用
org.threeten.bp
名称空间。其思想是,向前移动到JDK1.8只需要在大部分情况下对包进行重命名


javax.time
名称空间不再使用。

如何添加此类?你复制源代码了吗?是的。只需在源代码树中包含
javax/time/Duration.java
中的类。(仅仅从编译好的JSR-310 jar中复制它也应该可以,但我认为这并不重要。)他没有说“额外”jar。但我们应该建议他将“后端口”类放入一个额外的JAR中,这样就可以将其从不需要它的安装中删除,并在他在版本8之前停止支持Java时最终删除。@StephenC说得好,我假设有一个标准版本的库,这个库可以根据需要包括或丢弃。发布您自己的版本可能会比它的价值更大、更复杂。