2017-03-23 20 views
5

घटक विवरण - IntelliJ विचार 2017.1 सीई का उपयोग और JDK-9-ईए + 154RuntimeException: मॉड्यूल jrt.fs में पैकेज jdk.internal.jimage.decompressor और मॉड्यूल java.base

मुख्य() -

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([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) 

संदिग्ध वीएम की आरंभीकरण के कार्यान्वयन के साथ, मेरे सवाल है कि मैं मॉड्यूल jrt.fs शामिल नहीं किया है - यह कहाँ से तस्वीर में आ रहा है? मैं ऐसे मॉड्यूल समावेशन/बहिष्करण को कैसे डीबग करूं? मैं वर्तमान अपवाद को और कैसे हल करूं?

+1

यह वास्तव में अजीब है, मैंने कभी 'jrt.fs' के बारे में नहीं सुना। कौन सा जेडीके संस्करण (बिल्ड नंबर?) आप चल रहे हैं? साथ ही, 'जावा-सूची-मॉड्यूल' के साथ मॉड्यूल की तलाश करने का प्रयास करें। – Nicolai

+0

@ निकोलई वर्तमान में 'jdk-9-ea + 154' का उपयोग कर। मॉड्यूल के विवरणों को देखेंगे। 'Jrt.fs' के लिए क्या कोई विचार है? जानने में मदद कर सकते हैं। – nullpointer

उत्तर

5

$ JAVA_HOME/lib/jrt-fs.jar में जेडीके 8 में संकलित "jrt" फ़ाइल सिस्टम प्रदाता की एक प्रति है। यह उपकरण जैसे कि आईडीई जो जेडीके 8 पर चलती हैं लेकिन एक जेडीके 9 रन-टाइम छवि तक पहुंचने की आवश्यकता है।

अपवाद से तब ऐसा लगता है कि यह JAR फ़ाइल, या शायद $ JAVA_HOME/lib, को मॉड्यूल पथ पर त्रुटि में रखा गया है। जेएआर फाइलें जिनमें शीर्ष-स्तरीय निर्देशिका में कोई मॉड्यूल-info.class नहीं है, को स्वचालित मॉड्यूल के रूप में माना जाता है, इसलिए इस संदेश में अपवाद "मॉड्यूल jrt.fs" है। मूल रूप से अपवाद का मतलब है कि आप मॉड्यूल पथ पर jrt-fs.jar डालने के कारण jdk.internal.jimage.decompressor पैकेज (और कई अन्य संकुल) वाले दो मॉड्यूल के साथ समाप्त हो गए हैं।

2

jdk9 की निर्देशिका से jrt-fs.jar को हटाने का प्रयास करें। मैंने इंटेलिजे आईडीईए में प्रोजेक्ट स्ट्रक्चर में किया और यह मेरे लिए ठीक काम करता है

+0

मेरे लिए भी काम किया ... हालांकि मैं क्लासलोडर से संसाधन लोड करने में भी असमर्थ हूं, संभवतः फाइलसिस्टम मॉड्यूल jrt.fs को याद करने के कारण। निष्पक्ष होने के लिए, मैंने अभी तक सत्यापित नहीं किया है कि प्रश्न में कोड किसी अन्य जावा 9 पर्यावरण में काम करता है (यह 8 और उससे कम में सही है) – Ajax

संबंधित मुद्दे