Beberapa tahun yang lalu, saya mengembangkan sebuah untuk membantu saya mengubah nama file saya dalam batch. saya benar-benar membuatnya dengan Dalam hal apapun, saya tidak menggunakannya sampai minggu lalu. dan kemudian, saya terkejut melihat bahwa itu tidak bekerja untuk menamai ulang volume jaringan, meskipun itu ada di masa lalu. Menggunakan GUI Berbagai Framework JVM Masalahnya Ketika meluncurkan UberJAR, saya tidak bisa melihat volume jaringan. Jika saya mengetik jalur di bidang, saya tidak bisa melihat sub-nodes. Untuk izin : Saya mencoba menambahkan Java SDK atau UberJAR ke daftar, tetapi saya tidak menemukan cara. Local Network Pengaturan > Privasi & Keamanan > Jaringan Lokal yang Solusi yang Solusinya sederhana: buat aplikasi macOS biasa dari UberJAR. Anda bisa mereplikasi dengan tangan, tapi saya malas, dan ada alat untuk ini. Ini adalah alat seperti itu. adalah salah satu alat yang saya pelajari, saya eksotis tentang, digunakan sekali, dan lupa sampai lain kali. Kartu dengan struktur yang spesifik Jembatan jpackage Naif menggunakan Seperti ini pada awalnya: jpackage jpackage \ --type app-image \ #1 --input target \ #2 --name RenamerSwing \ #3 --main-jar renamer-swing-1.0-SNAPSHOT.jar #4 Menetapkan nilai Folder untuk mencakup Nama Aplikasi Jalan menuju Ubud Kami dapat meluncurkan aplikasi yang dihasilkan, dan OS bertanya apakah Anda ingin mengizinkan akses Jaringan Lokal. Namun, Kopi Seluruh Ini termasuk tidak hanya JAR asli, kelas, tetapi juga sisanya dari konten. jpackage target Meningkatkan konstruksi Saya memutuskan untuk meningkatkan membangun Maven alih-alih memanggil secara manual jpackage Langkah pertama adalah untuk memindahkan UberJAR ke folder kosong, sehingga kita dapat mengatur S adalah . jpackage input <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.3.1</version> <executions> <execution> <id>copy-jar-for-jpackage</id> <phase>package</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/jpackage-input</outputDirectory> <resources> <resource> <directory>${project.build.directory}</directory> <includes> <include>${project.build.finalName}.jar</include> </includes> </resource> </resources> </configuration> </execution> </executions> </plugin> Langkah selanjutnya adalah menemukan plugin Maven yang membungkus Saya temukan Berikut adalah cara menggunakannya: jpackage org.panteleyev:paket-makanan-plugin <plugin> <groupId>org.panteleyev</groupId> <artifactId>jpackage-maven-plugin</artifactId> <version>1.6.5</version> <configuration> <name>RenamerSwing</name> <!--1--> <appVersion>${project.version}</appVersion> <vendor>Nicolas Fränkel</vendor> <destination>target</destination> <input>target/jpackage-input</input> <!--2--> <mainJar>${project.build.finalName}.jar</mainJar> <!--3--> <mainClass>${main.class}</mainClass> <type>APP_IMAGE</type> <!--4--> </configuration> <executions> <execution> <id>jpackage</id> <phase>package</phase> <goals> <goal>jpackage</goal> </goals> </execution> </executions> </plugin> Nama App Menunjuk ke folder yang dibuat dalam langkah sebelumnya Jalan ke JAR Utama Menetapkan nilai Perhatikan bahwa parameter meniru opsi baris perintah. Mengakhiri sentuhan Ada dua sentuhan akhir: versi dan ukuran aplikasi. Mari kita mulai dengan versi. konfigurasi di atas menggunakan Konstruksi gagal jika cukup dengan , sebagai versi aplikasi Mac harus mengikuti pola Untuk memperbaiki hal ini, kita dapat memanfaatkan Ini menawarkan beberapa tujuan, termasuk yang menghancurkan versi Maven menjadi beberapa properti. ${project.version} -SNAPSHOT major.minor.bugfix Pembuatan Plugin Versi Parse <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>3.6.0</version> <executions> <execution> <id>parse-version</id> <phase>initialize</phase> <goals> <goal>parse-version</goal> </goals> </execution> </executions> </plugin> Kami dapat menggantikan baris versi dengan: <appVersion>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}</appVersion> Perbaikan kedua adalah ukuran aplikasi akhir. Konfigurasi di atas menghasilkan aplikasi 160MB di mesin saya. Tidak benar-benar berkaitan dengan aplikasi berbasis JVM, tetapi juga tidak hebat. Leverage yang di bawah ini; Menggunakan JRE. aplikasi ini sendiri. jpackage jlink jlink menggunakan semua modul yang dikonfigurasi, atau semua secara default. Di sisi yang tidak begitu baik, kami tidak mengkonfigurasi apapun. dengan hanya menambahkan modul yang diperlukan, kami dapat memotong ukuran aplikasi setengah, ke 82MB. jpackage <plugin> <groupId>org.panteleyev</groupId> <artifactId>jpackage-maven-plugin</artifactId> <version>1.6.5</version> <configuration> <name>RenamerSwing</name> <appVersion>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}</appVersion> <vendor>ch.frankel.blog</vendor> <destination>target</destination> <input>target/jpackage-input</input> <mainJar>${project.build.finalName}.jar</mainJar> <mainClass>${main.class}</mainClass> <type>APP_IMAGE</type> <addModules> <addModule>java.base</addModule> <addModule>java.desktop</addModule> <addModule>java.logging</addModule> </addModules> </configuration> Pada saat ini, Anda dapat memindahkan aplikasi ke Mac Anda Anda juga dapat menyesuaikannya lebih lanjut dengan ikon, dll. Bagi saya, itu cukup baik untuk tujuan saya. Applications Kesimpulan Dalam posting ini, kami memulai dengan UberJAR yang tidak dapat mengganti nama file pada volume remote karena model keamanan macOS saat ini. untuk membuatnya bekerja, kami membungkus UberJAR dalam aplikasi macOS asli. Kode sumber lengkap untuk posting ini dapat ditemukan di GitHub: https://github.com/ajavageek/renamer-swing?embedable=true To go further: Mengontrol akses aplikasi ke file di macOS Anatomi dari aplikasi macOS Jembatan Awalnya dipublikasikan di A Java Geek pada 25 Januari, 2025 Menggunakan Java Geek