RuntimeException: пакет jdk.внутренний.jimage.декомпрессор в модуле jrt.fs и модуль java.основа

Компонент Детали - через IntelliJ IDEA 2017.1 CE и jdk-9-ea+154

main () -

Set<String> set2 = Set.of("a", "b", "c");
set2.forEach(System.out::println);

модуль-инфо.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 - откуда он идет на картинке? Как выполнить отладку Включение/исключение таких модулей? Как я могу дополнительно решить текущее исключение?

2 ответов


$JAVA_HOME/lib / jrt-fs.jar содержит копию поставщика файловой системы "jrt", скомпилированную в JDK 8. Это для таких инструментов, как IDEs, которые работают на JDK 8, но должны получить доступ к образу времени выполнения JDK 9.

из исключения тогда кажется, что этот файл JAR, или, возможно, $JAVA_HOME/lib, был помещен на путь модуля по ошибке. JAR-файлы, не содержащие модуль-инфо.класс в каталоге верхнего уровня рассматривается как автоматические модули, поэтому исключение имеет " module jrt.fs " in сообщение. Исключение в основном означает, что вы закончили с двумя модулями, содержащими jdk.внутренний.jimage.пакет декомпрессора (и многие другие пакеты) из-за размещения jrt-fs.jar на пути к модулю.


Попробуйте удалить jrt-fs.jar из каталога jdk9. Я сделал это в структуре проекта в IntelliJ IDEA, и он отлично работает для меня