Heim >Java >javaLernprogramm >Wie vermeide ich unerwartete Probleme beim Erstellen von JAR-Dateien mit Javas JarOutputStream?
Das programmgesteuerte Erstellen von JAR-Dateien mit java.util.jar.JarOutputStream kann unkompliziert erscheinen, aber bestimmte Nuancen können zu unerwarteten Problemen führen. Dieser Artikel untersucht diese undokumentierten Macken und bietet eine umfassende Lösung zum Erstellen gültiger JAR-Dateien.
Bei der Verwendung von JarOutputStream ist es wichtig, die folgenden undokumentierten Regeln einzuhalten:
Hier ist ein detailliertes Beispiel, wie man eine JAR-Datei mit einer Manifestdatei erstellt und die oben genannten Macken behebt:
<code class="java">public void run() throws IOException { // Prepare the manifest file Manifest manifest = new Manifest(); manifest.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "1.0"); // Create a new JAROutputStream with the manifest JarOutputStream target = new JarOutputStream(new FileOutputStream("output.jar"), manifest); // Iterate over the source directory and add files to the JAR add(new File("inputDirectory"), target); // Close the JAROutputStream target.close(); } private void add(File source, JarOutputStream target) throws IOException { // Prepare the entry path String name = source.getPath().replace("\", "/"); // Handle directories if (source.isDirectory()) { if (!name.endsWith("/")) { name += "/"; } // Create a directory entry with appropriate timestamps JarEntry entry = new JarEntry(name); entry.setTime(source.lastModified()); target.putNextEntry(entry); target.closeEntry(); // Recursively add files within the directory for (File nestedFile : source.listFiles()) { add(nestedFile, target); } } // Handle files else { // Create a file entry with appropriate timestamps JarEntry entry = new JarEntry(name); entry.setTime(source.lastModified()); target.putNextEntry(entry); // Read and write the file contents to the JAR try (BufferedInputStream in = new BufferedInputStream(new FileInputStream(source))) { byte[] buffer = new byte[1024]; while (true) { int count = in.read(buffer); if (count == -1) break; target.write(buffer, 0, count); } target.closeEntry(); } } }</code>
Von Wenn Sie diese Richtlinien befolgen, können Sie jetzt sicher gültige JAR-Dateien programmgesteuert erstellen und so sicherstellen, dass auf Bibliotheken und andere darin enthaltene Ressourcen wie vorgesehen zugegriffen werden kann.
Das obige ist der detaillierte Inhalt vonWie vermeide ich unerwartete Probleme beim Erstellen von JAR-Dateien mit Javas JarOutputStream?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!