Java 9では、いわゆる分割パッケージ、つまり同じパッケージが2つの異なるモジュールで定義されているようには見えません。これは私の移行プロセスで問題が発生します(Gradleの)プロジェクトは、このような構造で、bootstrap.jar
と呼ばれるJarファイルが含まれていますJavaの分割パッケージとブートストラップJar 9
bootstrap.jar
- com
- example
- Foo.class
- Bar.class
- Baz.class
src
ディレクトリには、同様にFoo
に依存クラスcom.example.Bar
が含まれていますcom.example
のモジュール定義です。 bootstrap.jar
ファイルには、Java 9より前にコンパイルされたモジュール情報が含まれていないため、bootstrap
という自動モジュールが使用されます。問題は、現在パッケージcom.example
が両方のモジュールで定義されていることです。com.example
とbootstrap
です。次のように開始するには、このbootstrap.jar
ファイルがある
理由は、次のとおりです。
src/com/example
フォルダが実際にBar.java
、Baz.java
と別のファイル、Foo.dyvil
が含まれています。後者は、JVMベースのプログラミング言語で書かれています。だから、依存チェーンは次のようになります。
Bar.java -> Foo.dyvil -> Baz.java
ビルドプロセスの間に、それは後でbootstrap.jar
に取って代わる新しいJARファイルに置かれますFoo.class
にコンパイルされます。これらのファイルがすべて配置される理由は、JavaコンパイラとDyvilコンパイラが他の言語ファイルを処理できないため、前のビルドからコンパイルされたクラスにいくらかアクセスする必要があるためです。だからこそ、bootstrap.jar
があるのです。
現実問題:分割されたパッケージはJava 9では使用できませんので、私のプロジェクトで説明した「ブートストラップ」jarファイルを使用して「分割ビルド」を達成する方法はありますか?それとも他の方法がありますか?
私は 'bootstrap.jar'のみのビルドに使用されているので、そのすべての後にパッケージがもはや – Clashsoft
を分割している私はGradleの中に、コンパイラの引数として、これらのオプションを追加する必要が負うものではありませんが、どのように私はそれはOKだと思いますIntelliJでこれを利用しますか? – Clashsoft
編集実行コンフィギュレーションのgradleオプションとVMオプションは、intelliJで使用できる場所です。 – nullpointer