Apabila mengakses sumber dari dalam fail JAR, pembangun sering menghadapi kesukaran. Satu isu sedemikian timbul apabila cuba membaca fail XML daripada JAR menggunakan FileReader, mengakibatkan ralat "FileNotFoundException".
Dalam kes khusus ini, pembangun mengambil semula URL ke fail XML dengan betul tetapi menghadapi ralat apabila menghantarnya ke FileReader. Ini menunjukkan bahawa kaedah mendapatkan semula URL berfungsi. Walau bagaimanapun, isunya terletak pada langkah seterusnya:
XMLReader xr = XMLReaderFactory.createXMLReader(); xr.setContentHandler( this ); xr.setErrorHandler( this ); xr.parse( new InputSource( new FileReader( filename )));
FailReader memerlukan laluan fail sebagai hujahnya, manakala URL yang diperolehi oleh getClass().getResource() menghala ke sumber dalam JAR.
Untuk menyelesaikan masalah ini, gunakan java.lang.Class.getResourceAsStream(String) kaedah, yang mengembalikan InputStream yang boleh digunakan untuk membaca sumber:
URL url = getClass().getResource("/xxx/xxx/xxx/services.xml"); InputStream is = url.openStream();
InputStream kemudiannya boleh digunakan untuk memulakan InputSource untuk penghurai XML:
xr.parse( new InputSource( is ));
Dengan menggunakan getResourceAsStream, pembangun boleh berjaya baca sumber XML daripada fail JAR, menghapuskan ralat "FileNotFoundException".
Atas ialah kandungan terperinci Mengapa FileReader Gagal Membaca XML dari JAR Java, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!