RuntimeException:在模块jrt.fs和模块java.base中打包jdk.internal.jimage.decompressor
组件详细信息 – 使用IntelliJ IDEA 2017.1 CE和jdk-9-ea + 154
main() –
Set 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
– 图片来自哪里? 如何调试此类模块包含/排除? 如何进一步解决当前exception?
$ JAVA_HOME / lib / jrt-fs.jar包含编译到JDK 8的“jrt”文件系统提供程序的副本。它适用于在JDK 8上运行但需要访问JDK 9运行时映像的IDE等工具。
从exception开始,看起来这个JAR文件,或者可能是$ JAVA_HOME / lib,已经错误地放在了模块路径上。 在顶级目录中不包含module-info.class的JAR文件被视为自动模块,因此这就是消息中exception具有“module jrt.fs”的原因。 exception基本上只是意味着你最终得到了两个包含jdk.internal.jimage.decompressor包(和许多其他包)的模块,因为在模块路径上放了jrt-fs.jar。
尝试从jdk9目录中删除jrt-fs.jar。 我在IntelliJ IDEA的Project Structure中做到了,它对我来说很好