コンポーネントの詳細-使用IntelliJ IDEA 2017.1 CEおよびjdk-9-ea + 154
main()-
Set<String> set2 = Set.of("a", "b", "c");
set2.forEach(System.out::println);
module-info.Java
module collection {
requires Java.base;
}
ログ-
Error occurred during initialization of VM
Java.lang.RuntimeException: Package jdk.internal.jimage.decompressor in both module jrt.fs and module Java.base
at jdk.internal.module.ModuleBootstrap.fail(Java.base@9-ea/ModuleBootstrap.Java:699)
at jdk.internal.module.ModuleBootstrap.boot(Java.base@9-ea/ModuleBootstrap.Java:329)
at Java.lang.System.initPhase2(Java.base@9-ea/System.Java:1928)
VMの初期化の実装に疑問がありますが、私の質問は、モジュールjrt.fs
を含めていないということです-それはどこから来たのですか?このようなモジュールの包含/除外をデバッグするにはどうすればよいですか?現在の例外をさらに解決するにはどうすればよいですか?
$ Java_HOME/lib/jrt-fs.jarには、JDK 8にコンパイルされた「jrt」ファイルシステムプロバイダーのコピーが含まれています。これは、JDK 8で実行されるが、JDK9ランタイムイメージにアクセスする必要があるIDEなどのツール用です。
例外から、このJARファイルまたは$ Java_HOME/libが誤ってモジュールパスに配置されたように見えます。最上位ディレクトリにmodule-info.classが含まれていないJARファイルは自動モジュールとして扱われるため、例外のメッセージに「modulejrt.fs」が含まれています。例外は基本的に、モジュールパスにjrt-fs.jarを配置したために、jdk.internal.jimage.decompressorパッケージ(および他の多くのパッケージ)を含む2つのモジュールになってしまったことを意味します。
Manjaro Linuxでも同じ問題が発生しましたが、Windowsでは正常に機能していました。違いを見ると、javafx11パッケージが/ lib/jvm/Java-11-openjdk/libにインストールされ、PATH_TO_FXとして設定されていることが明らかになりました。 jrt-fs.jarが同じフォルダにあるため、これが問題のようです。
すべてのファイルをfxから別のフォルダーに移動し、それをPATH_TO_FXとして設定しました。今では正常に動作します。
Jdk9のディレクトリからjrt-fs.jarを削除してみてください。 IntelliJのプロジェクト構造でそれを行いましたIDEAそしてそれは私にとってはうまくいきます
.metadataフォルダーを削除してから、Eclipseを再起動します。
Eclipseでは、Eclipseワークスペースを変更するか、ワークスペースフォルダー内の.metadataフォルダーを削除することができました。
何が修正されたのかわかりませんが、推測する必要がある場合は、.metadataフォルダー内の何かが例外の原因である可能性があります。