La création de fichiers JAR par programme à l'aide de java.util.jar.JarOutputStream peut sembler simple, mais certaines nuances peuvent entraîner des problèmes inattendus. Cet article explore ces bizarreries non documentées et fournit une solution complète pour créer des fichiers JAR valides.
Lors de l'utilisation de JarOutputStream, il est crucial de respecter les règles non documentées suivantes :
Voici un exemple détaillé de la façon de créer un fichier JAR avec un fichier manifeste, répondant aux bizarreries susmentionnées :
<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>
Par en suivant ces directives, vous pouvez désormais créer en toute confiance des fichiers JAR valides par programme, en garantissant que les bibliothèques et autres ressources qu'ils contiennent sont accessibles comme prévu.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!