4

javax.time.Duration現在、JSR-310 のごく一部をライブラリに追加することを考えています。

これは現在完全に正常に動作します。

But JSR-310 is planned to be integrated in Java 8! When executing our application on Java 8, what will happen if there is both a javax.time.Duration class in the standard library and the same class shipping with our jar file?

Will one of the classes be silently ignored? (Which one?) Will there be an error when a Java 8 VM tries to load the class from our library?

Are there any compatibility issues I need to be aware of?

4

2 に答える 2

6

JVM はクラスパスに従って、ロードするクラスを決定します。複数ある場合、後のクラスは黙って無視されます。

JVM 自体に含まれるクラスの場合、これらはクラスパスの前に検索される bootclasspath の一部です。

API に重大な変更がない限り、違いに気付かないはずです。余分な JAR は Java 8 では事実上無視されます。

于 2012-09-05T11:39:11.267 に答える
1

この問題を明確にすることができます。

JDK1.8 クラスはjava.time名前空間にあり、オーバーライドできません (Java のコアに深く組み込まれているため)。

非常によく似た API を JDK1.7 で使用できるようにするバックポート プロジェクトが利用可能です。それはorg.threeten.bp名前空間を使用します。JDK1.8 に移行するには、ほとんどの場合、パッケージの名前を変更するだけで済みます。

名前javax.time空間は使用されなくなりました。

于 2013-04-09T14:27:51.967 に答える