首頁 >Java >java教程 >如何在 Java 中使用 JarOutputStream 正確建立 JAR 檔案?

如何在 Java 中使用 JarOutputStream 正確建立 JAR 檔案?

Patricia Arquette
Patricia Arquette原創
2024-10-29 13:42:02976瀏覽

How to Properly Create a JAR File Using JarOutputStream in Java?

使用 JarOutputStream 建立 JAR 檔案

本文介紹如何使用 Java 的 java.util.jar.JarOutputStream 類別程式設計方式建立 JAR 檔案。雖然創建的 JAR 檔案最初可能看起來正確,但在使用時可能無法載入庫。原因在於 JarOutputStream 的某些未記錄的怪癖。

JarOutputStream 的怪癖:

  • 目錄名稱必須以「/」斜線結尾。
  • 路徑必須使用「/」斜杠,而不是「」。
  • 條目不能以「/」斜線開頭。

使用JarOutputStream 的正確方法:

要使用正確的方法建立包含清單檔案的JAR 文件,請按照以下步驟操作:

  1. 建立Manifest 物件並填滿其主要屬性。
  2. 建立使用 FileOutputStream 和 Manifest 物件的 JarOutputStream。
  3. 使用 add() 方法遞歸地將檔案和目錄包含到 JAR 檔案中。

add() 方法:

<code class="java">private void add(File source, JarOutputStream target) throws IOException {
    String name = source.getPath().replace("/", "/"); // Ensure path uses '/' slash
    if (source.isDirectory()) {
        if (!name.endsWith("/")) {
            name += "/"; // Add trailing '/' for directories
        }
        JarEntry entry = new JarEntry(name);
        entry.setTime(source.lastModified());
        target.putNextEntry(entry);
        target.closeEntry();
        for (File nestedFile : source.listFiles()) {
            add(nestedFile, target);
        }
    } else {
        JarEntry entry = new JarEntry(name);
        entry.setTime(source.lastModified());
        target.putNextEntry(entry);
        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>

依照這些準則,您可以使用與其他 Java 工具相容的 JarOutputStream 以程式設計方式建立 JAR 檔案。

以上是如何在 Java 中使用 JarOutputStream 正確建立 JAR 檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn