web-dev-qa-db-ja.com

RuntimeException:モジュールjrt.fsおよびモジュールJava.baseのパッケージjdk.internal.jimage.decompressor

コンポーネントの詳細-使用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を含めていないということです-それはどこから来たのですか?このようなモジュールの包含/除外をデバッグするにはどうすればよいですか?現在の例外をさらに解決するにはどうすればよいですか?

6
Naman

$ 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つのモジュールになってしまったことを意味します。

5
Alan Bateman

Manjaro Linuxでも同じ問題が発生しましたが、Windowsでは正常に機能していました。違いを見ると、javafx11パッケージが/ lib/jvm/Java-11-openjdk/libにインストールされ、PATH_TO_FXとして設定されていることが明らかになりました。 jrt-fs.jarが同じフォルダにあるため、これが問題のようです。

すべてのファイルをfxから別のフォルダーに移動し、それをPATH_TO_FXとして設定しました。今では正常に動作します。

3

Jdk9のディレクトリからjrt-fs.jarを削除してみてください。 IntelliJのプロジェクト構造でそれを行いましたIDEAそしてそれは私にとってはうまくいきます

2
Aliaksandr Kot

.metadataフォルダーを削除してから、Eclipseを再起動します。

0
Eric

Eclipseでは、Eclipseワークスペースを変更するか、ワークスペースフォルダー内の.metadataフォルダーを削除することができました。

何が修正されたのかわかりませんが、推測する必要がある場合は、.metadataフォルダー内の何かが例外の原因である可能性があります。

0
p-p-j