java.util.jar.JarOutputStream का उपयोग करके प्रोग्रामेटिक रूप से JAR फ़ाइलें बनाना सीधा लग सकता है, लेकिन कुछ बारीकियाँ अप्रत्याशित समस्याओं को जन्म दे सकती हैं। यह आलेख इन अनिर्दिष्ट विचित्रताओं का पता लगाता है और वैध JAR फ़ाइलें बनाने के लिए एक व्यापक समाधान प्रदान करता है। &&&]
निर्देशिका नाम '/' स्लैश के साथ समाप्त होने चाहिए।पथ में '/' स्लैश होने चाहिए, '\' नहीं।सार्वजनिक शून्य रन() IOException फेंकता है { // मैनिफ़ेस्ट फ़ाइल तैयार करें मैनिफ़ेस्ट मेनिफेस्ट = नया मेनिफेस्ट(); मैनिफ़ेस्ट.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "1.0"); // मेनिफेस्ट के साथ एक नया JAROutputStream बनाएं JarOutputStream लक्ष्य = नया JarOutputStream(नया FileOutputStream("output.jar"), मेनिफ़ेस्ट); // स्रोत निर्देशिका पर पुनरावृति करें और JAR में फ़ाइलें जोड़ें जोड़ें(नई फ़ाइल("इनपुटडायरेक्टरी"), लक्ष्य); // JAROutputStream को बंद करें लक्ष्य.बंद करें(); } निजी शून्य ऐड (फ़ाइल स्रोत, JarOutputStream लक्ष्य) IOException फेंकता है { // प्रवेश पथ तैयार करें स्ट्रिंग नाम = source.getPath().replace("\\", "/"); // निर्देशिका संभालें यदि (source.isDirectory()) { यदि (!name.endsWith("/")) { नाम = "/"; } // उचित टाइमस्टैम्प के साथ एक निर्देशिका प्रविष्टि बनाएं JarEntry प्रविष्टि = नई JarEntry(नाम); Entry.setTime(source.lastModified()); target.putNextEntry(entry); target.closeEntry(); // निर्देशिका के भीतर पुनरावर्ती रूप से फ़ाइलें जोड़ें के लिए (फ़ाइल नेस्टेडफ़ाइल: source.listFiles()) { जोड़ें(नेस्टेडफ़ाइल, लक्ष्य); } } // फ़ाइलें संभालें अन्य { // उचित टाइमस्टैम्प के साथ एक फ़ाइल प्रविष्टि बनाएं JarEntry प्रविष्टि = नई JarEntry(नाम); Entry.setTime(source.lastModified()); target.putNextEntry(entry); // फ़ाइल सामग्री को JAR पर पढ़ें और लिखें प्रयास करें (BufferedInputStream in = new BufferedInputStream(new FileInputStream(source))) { बाइट[] बफ़र = नया बाइट[1024]; जबकि (सत्य) { int गिनती = in.read(बफर); यदि (गिनती == -1) तोड़ना; लक्ष्य.लिखें(बफर, 0, गिनती); } target.closeEntry(); } } }
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3