Memuatkan Sumber daripada Fail JAR
Dalam aplikasi anda, anda memuatkan sumber menggunakan WinProcessor.class.getResource("repository"). toString(), yang menyediakan laluan fail apabila dijalankan daripada IDE tetapi mengembalikan URL JAR apabila melaksanakan sebagai fail JAR. Percanggahan ini timbul kerana fail JAR mengandungi sumber dalam format mampat dan berpakej.
Memahami Pemuatan Sumber dalam JAR
Apabila anda membungkus aplikasi anda ke dalam fail JAR, kandungannya , termasuk sumber, disimpan dalam arkib. Apabila anda cuba mengakses sumber dari dalam fail JAR, JVM melayannya secara berbeza daripada fail dalam sistem fail. Kaedah getResource mengembalikan URL yang menghala ke lokasi sumber dalam JAR.
Penyelesaian: Menggunakan getResourceAsStream
Untuk menyelesaikan isu ini, disyorkan untuk menggunakan getResourceAsStream dan bukannya getResource. getResourceAsStream mengembalikan InputStream yang membolehkan anda membaca kandungan sumber terus daripada fail JAR. Anda kemudiannya boleh menggunakan InputStream untuk mencipta objek yang diperlukan, seperti ConfigurationContext atau tetapkan sifat sistem.
Berikut ialah contoh yang dikemas kini menggunakan getResourceAsStream:
InputStream repositoryInputStream = WinProcessor.class.getResourceAsStream("repository"); ConfigurationContext ctx = (ConfigurationContext) ConfigurationContextFactory.createConfigurationContextFromFileSystem(repositoryInputStream, null); InputStream fileNameInputStream = WinProcessor.class.getResourceAsStream("file_name"); System.setProperty("javax.net.ssl.trustStore", fileNameString);
Dengan menggunakan getResourceAsStream, anda boleh mengelakkan isu perbezaan laluan antara berjalan dari IDE dan melaksanakan sebagai fail JAR. InputStream dengan betul menunjuk ke lokasi sumber dalam JAR, membolehkan anda mengakses kandungannya.
Atas ialah kandungan terperinci Bagaimana untuk Mengakses Sumber dari Fail JAR di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!