問題タブ [multi-release-jar]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 古いJDKを対象としたJPMS/Jigsaw互換のJavaライブラリ
Maven を使用して、JDK 7 および 8 と互換性のあるライブラリ jar ファイルを構築する方法を理解しようとしていますがmodule-info.java
、そのパブリック API を明示的に宣言するファイルが含まれています。
問題: 古いターゲット バージョン用にコンパイルする必要がありますが、古い JDK は明らかに新しい JPMS 機能を認識していません。
Robert Scholte によるこの講演では、module-info ファイルのみを JDK9 でコンパイルするのが最善の方法のようです。しかし、どうすれば.jarに含めることができますか?
最小限の例pom.xml
は非常に役立ちます。:-)
編集:明確にするために:コンパイラエラーは発生しません。JDK 9 ユーザーに JPMS を使用するという基本的な概念について尋ねただけですが、私のライブラリは JDK 7 および 8 との下位互換性を維持しています。
java - Gradle のマルチリリース jar
マルチリリースjarを使用してJava 9+機能をバックアップJava 8実装で使用するようにライブラリをセットアップしようとして、しばらく頭を悩ませていました。ただし、それは私のプロジェクトのモジュールにのみ必要です。
モジュールの現在の build.gradle は次のようになります。
ただし、intellij で build.gradle を更新すると、次のエラーが発生します。
Could not find method java9Implementation() for arguments [file collection] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
これはgradle 4.8.1上にあることにも注意してください。