2017-03-23 12 views
5

Détails des composants - L'utilisation IntelliJ IDEA 2017,1 CE et jdk-9-ea + 154RuntimeException: Package jdk.internal.jimage.decompressor Module jrt.fs module java.base

main() -

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

module-info.java

module collection { 
    requires java.base; 
} 

Journaux -

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([email protected]/ModuleBootstrap.java:699) 
    at jdk.internal.module.ModuleBootstrap.boot([email protected]/ModuleBootstrap.java:329) 
    at java.lang.System.initPhase2([email protected]/System.java:1928) 

Douteux sur la mise en œuvre de l'initialisation de VM, ma question est que je ne l'ai pas module inclus jrt.fs - Où est-il à venir dans l'image de? Comment puis-je déboguer de tels modules inclusion/exclusion? Comment puis-je résoudre l'exception actuelle?

+1

C'est vraiment bizarre, je n'ai jamais entendu parler de 'jrt.fs'. Quelle version de JDK (numéro de version?) Utilisez-vous? Essayez également de rechercher le module avec 'java --list-modules'. – Nicolai

+0

@Nicolai En utilisant 'jdk-9-ea + 154' actuellement. Serait regarder dans les détails des modules.Toute idée sur ce que 'jrt.fs' est utilisé pour? Pourrait aider à apprendre à connaître. – nullpointer

Répondre

5

$ JAVA_HOME/lib/JRT-fs.jar contient une copie du fournisseur de système de fichier « JRT » compilé JDK 8. Il est pour des outils tels que IDE qui s'exécutent sur JDK 8 mais doivent accéder à une image d'exécution JDK 9. De l'exception, il semble que ce fichier JAR, ou peut-être $ JAVA_HOME/lib, a été placé sur le chemin du module par erreur. Les fichiers JAR qui ne contiennent pas de module-info.class dans le répertoire de premier niveau sont traités comme des modules automatiques, c'est pourquoi l'exception a "module jrt.fs" dans le message. L'exception signifie simplement que vous avez fini avec deux modules contenant le paquetage jdk.internal.jimage.decompressor (et de nombreux autres paquets) en raison de la présence de jrt-fs.jar sur le chemin du module.

2

Essayez de supprimer jrt-fs.jar du répertoire de jdk9. Je l'ai fait dans la structure du projet dans IntelliJ IDEA et il fonctionne très bien pour moi

+0

Travaillé pour moi aussi ... bien que je sois également incapable de charger des ressources de classloader, probablement en raison de l'absence du module FileSystem jrt.fs. Pour être honnête, je n'ai pas encore vérifié que le code en question fonctionne dans un autre environnement java 9 (il est correct à 8 et moins) – Ajax