मैं एक जार के अंदर एक जार का उपयोग करने की NIO FileSystem उपयोग करने के लिए कोशिश कर रहा हूँ अंदर एक जार करने के लिए एक फाइल सिस्टम बना सकते हैं। बाहर जार मेरी-outer.jar और भीतरी कॉल मेरी-inner.jar (जावा 8 और विंडोज 7 का उपयोग करते हुए, लेकिन मुझे लगता है कि मुद्दा नहीं है)कैसे मैं एक जार
मैं निम्नलिखित कोड
String zipfilePath = "c:/testfs/my-outer.jar!/my-inner.jar";
Path path = Paths.get(zipfilePath);
try(ZipFileSystem zipfs = (ZipFileSystem) FileSystems.newFileSystem(path, null))
{ ... }
उपयोग कर रहा हूँ
लेकिन मैं नीचे जब कि newFileSystem बनाते समय अपवाद हो रही है:
Exception in thread "main" java.nio.file.FileSystemNotFoundException: C:\testfs\my-outer.jar!\my-inner.jar
ध्यान दें कि अगर मैं सिर्फ FileSystem के रूप में बाहरी जार, कि पूरी तरह से ठीक काम करता है का उपयोग करें और मैं इसे से खूबसूरती से पढ़ सकते हैं और फ़ाइलें लिख सकते हैं । यह तब होता है जब मैं आंतरिक संग्रह में पहुंचने की कोशिश करता हूं कि परेशानियां शुरू होती हैं।
JarURLConnection अंकन का समर्थन फाइल सिस्टम नहीं है?
ZipFileSystem के स्रोतों decompiled को ऐसा लगता है कि यह केवल "असली" फ़ाइलों का समर्थन करता देख से। नेस्टेड ज़िप (जार) अभिलेखागार के लिए आपको "निम्न-स्तर" java.util.zip पैकेज (या डिस्क पर आंतरिक आर्केव निकालने की आवश्यकता होगी, हालांकि मैं इसे एक अच्छा समाधान नहीं कहूंगा)। – vbezhenar
कोई अच्छा विचार नहीं है। यहां तक कि एक-स्तर की जेएआर फाइल सिस्टम भी बहुत खराब प्रदर्शन करने जा रहा है। – EJP