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 für die Erstellung einer JAR-Datei mit einer Manifestdatei, das die oben genannten Probleme behebt Macken:
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();
}
}
}
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.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3