Detalles del componente : uso de IntelliJ IDEA 2017.1 CE y jdk-9-ea+154
principal() -
Set<String> set2 = Set.of("a", "b", "c"); set2.forEach(System.out::println);módulo-info.java
module collection { requires java.base; }Registros -
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) Dudoso sobre la implementación de la inicialización de VM , mi pregunta es que no he incluido el módulo jrt.fs ¿De dónde viene en la imagen? ¿Cómo depuro la inclusión/exclusión de dichos módulos? ¿Cómo resuelvo aún más la excepción actual?
Recibí el mismo error en Arch Linux. El paquete java-openjfx instala sus bibliotecas en el directorio lib de openjdk , lo que parece causar problemas. Encontré una solución al agregar no todo el directorio lib, sino solo las bibliotecas necesarias.
En la estructura del proyecto> Bibliotecas> +> Java> /usr/lib/jvm/default/lib> seleccione las bibliotecas necesarias (presionando ctrl) debería verse así
Luego, en Ejecutar configuraciones, configure las Opciones de VM en consecuencia
--module-path /usr/lib/jvm/java-14-openjdk/lib/javafx.base.jar:/usr/lib/jvm/java-14-openjdk/lib/javafx.controls.jar:/usr/lib/jvm/java-14-openjdk/lib/javafx.graphics.jar --add-modules=javafx.controlsPara mi proyecto, fue suficiente solo agregar controles como módulo, pero se requería la ruta a la base y los gráficos para que se ejecutara.
Tuve el mismo problema en Manjaro Linux, mientras funcionaba bien en Windows. Al observar las diferencias, quedó claro que el paquete javafx 11 se instala en /lib/jvm/java-11-openjdk/lib, que luego establecí como PATH_TO_FX. Este parece ser el problema, porque jrt-fs.jar está en la misma carpeta.
Moví todos los archivos de fx a una carpeta separada y luego la configuré como PATH_TO_FX. Ahora funciona bien.
$JAVA_HOME/lib/jrt-fs.jar contiene una copia del proveedor del sistema de archivos "jrt" compilado en JDK 8. Es para herramientas como IDE que se ejecutan en JDK 8 pero necesitan acceder a una imagen de tiempo de ejecución de JDK 9.
A partir de la excepción, parece que este archivo JAR, o tal vez $JAVA_HOME/lib, se ha colocado en la ruta del módulo por error. Los archivos JAR que no contienen un module-info.class en el directorio de nivel superior se tratan como módulos automáticos, por lo que la excepción tiene "module jrt.fs" en el mensaje. La excepción básicamente significa que terminó con dos módulos que contienen el paquete jdk.internal.jimage.decompressor (y muchos otros paquetes) debido a que colocó jrt-fs.jar en la ruta del módulo.