Rumah >Java >javaTutorial >Bagaimana untuk membuat fail JAR dengan betul menggunakan JarOutputStream di Java?

Bagaimana untuk membuat fail JAR dengan betul menggunakan JarOutputStream di Java?

Patricia Arquette
Patricia Arquetteasal
2024-10-29 13:42:02985semak imbas

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

Membuat Fail JAR Menggunakan JarOutputStream

Artikel ini membincangkan penciptaan fail JAR secara pengaturcaraan menggunakan kelas java.util.jar.JarOutputStream Java. Walaupun fail JAR yang dibuat mungkin kelihatan betul pada mulanya, ia boleh gagal untuk memuatkan perpustakaan apabila digunakan. Sebabnya terletak pada kebiasaan JarOutputStream tertentu yang tidak didokumentasikan.

Keanehan JarOutputStream:

  • Nama direktori mesti ditamatkan dengan garis miring '/'.
  • Laluan mesti menggunakan garis miring '/', bukan ''.
  • Entri tidak boleh bermula dengan garis miring '/'.

Pendekatan Betul Menggunakan JarOutputStream:

Untuk mencipta fail JAR dengan fail manifes menggunakan kaedah yang betul, ikuti langkah berikut:

  1. Buat objek Manifes dan isikan atribut utamanya.
  2. Buat JarOutputStream menggunakan objek FileOutputStream dan Manifest.
  3. Gunakan kaedah add() untuk memasukkan fail dan direktori secara rekursif ke dalam fail JAR.

Kaedah 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>

Dengan mengikut garis panduan ini, anda boleh mencipta fail JAR secara pengaturcaraan menggunakan JarOutputStream yang serasi dengan alatan Java yang lain.

Atas ialah kandungan terperinci Bagaimana untuk membuat fail JAR dengan betul menggunakan JarOutputStream di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn