रनटाइम संसाधनों को पीछे के संगत तरीके से संभाला जाता है। जैसे जब आप अतीत में
URL url = Object.class.getResource("Object.class");
System.out.println(url);
किया था, तो आप आमतौर पर जावा 9 के तहत एक ही चल रहा है की तरह
jar:file:/path-to-jre/lib/rt.jar!/java/lang/Object.class
कुछ आप
jrt:/java.base/java/lang/Object.class
बजाय दे देंगे मिला है। किसी भी मामले में, आप अन्य उपलब्ध संसाधनों (जावा 7 के बाद से) का निरीक्षण करने के लिए FileSystem
खोल सकते हैं।
private static void readMyOwnJRE() throws IOException {
try {
Path p = Paths.get(URI.create("jrt:/modules"));
System.out.println("My own JRE's modules:");
Files.list(p).forEach(System.out::println);
System.out.println();
} catch(FileSystemNotFoundException ex) {
System.out.println("Could not read my modules (perhaps not Java 9?).");
}
}
आप एक आप का निरीक्षण करना चाहते हैं की तुलना में अलग JRE के तहत चलाए जा रहे हैं, तो आप लोड करने के लिए है: एक ओर जहां ZipFileSystem
FileSystems.newFileSystem
पहले, जावा 9 के फाइल सिस्टम के माध्यम से बनाया जा सकता था यहां तक कि पहले से ही उपयोग के लिए खुला है उचित फाइल सिस्टम कार्यान्वयन मैन्युअल पहले, लेकिन यह एक जावा 8 JRE से भी एक जावा 9 स्थापना निरीक्षण करने के लिए संभावना को खोलता है:
public static void readOtherJRE(Path pathToJRE) throws IOException {
Path p = pathToJRE.resolve("lib").resolve("jrt-fs.jar");
if(Files.exists(p)) {
try(URLClassLoader loader = new URLClassLoader(new URL[]{ p.toUri().toURL() });
FileSystem fs = FileSystems.newFileSystem(URI.create("jrt:/"),
Collections.emptyMap(),
loader)) {
System.out.println("Modules of "+pathToJRE);
Files.list(fs.getPath("/modules")).forEach(System.out::println);
System.out.println();
}
}
}
एक बार जब आप एक फाइल सिस्टम (या इसे में एक Path
) है, वाई कहां के सभी मानक कार्यों का उपयोग कर सकते हैं, उदा। Files
डेटा का निरीक्षण या निकालने/प्रतिलिपि बनाने के लिए, हालांकि सही शब्द "एक समतुल्य फ़ाइल फ़ाइल को एक अलग फ़ाइल सिस्टम में संग्रहीत करने के लिए" होगा, क्योंकि रनटाइम छवि का प्रतिनिधित्व कक्षा फ़ाइल होना आवश्यक नहीं है।
'जिमेज' के किसी भी लिंक और इसका उपयोग कैसे किया जा सकता है, यह भी उपयोगी होगा। – nullpointer
जिमेज के लिए कोई दस्तावेज़ पृष्ठ नहीं है लेकिन 'jimage --help' में पर्याप्त होना चाहिए। ध्यान दें कि टूल समस्या निवारण/समर्थन उपयोग के लिए शामिल है, यह ऐसा कुछ नहीं है जिसे अधिकांश डेवलपर्स की कभी आवश्यकता होगी। –
मेरे लिए काम किया। बस $ Jimage $ JAVA_HOME/lib/मॉड्यूल 'निकालना और poof! – 0xbe5077ed