Rumah  >  Artikel  >  Java  >  Bagaimana untuk mengakses sumber terbenam dalam JAR secara konsisten?

Bagaimana untuk mengakses sumber terbenam dalam JAR secara konsisten?

Barbara Streisand
Barbara Streisandasal
2024-11-06 08:26:02838semak imbas

How to access embedded resources in a JAR consistently?

Memuatkan Sumber daripada JAR

Apabila mengakses sumber yang dibenamkan dalam arkib JAR, pembangun biasanya menghadapi percanggahan antara laluan sumber yang diperoleh semasa IDE pelaksanaan dan semasa menjalankan aplikasi melalui JAR. Dalam konteks IDE, sumber diakses terus daripada sistem fail, manakala dalam persekitaran JAR, laluan menjadi sangat teruk dihiasi dengan awalan arkib (cth., "jar:/root/app.jar!/").

Untuk menyelesaikan isu ini dan mengekalkan mekanisme capaian sumber yang konsisten, patuhi nasihat berikut:

Gunakan getResourceAsStream

Elak godaan untuk memuatkan sumber menggunakan FileInputStream atau pendekatan yang serupa . Sebaliknya, manfaatkan kaedah getResourceAsStream() untuk mendapatkan semula sumber sebagai aliran input, dari mana data boleh dibaca dengan mudah.

Elakkan Akses Sistem Fail Terus

Jika anda kod bergantung pada mengakses sumber sebagai fail tunggal yang disimpan dalam sistem fail, elakkan daripada membungkus sumber tersebut dalam fail JAR. Pertimbangkan susunan alternatif, seperti mengekalkannya sebagai fail yang berasingan.

Pertimbangkan Pengekstrakan Fail Sementara

Sebagai langkah terakhir, anda mungkin meneroka penyelesaian hacky yang melibatkan langkah berikut :

  1. Semak sama ada sumber itu terletak dalam fail berasingan dalam JAR.
  2. Jika tidak, ekstrak sumber itu ke fail sementara.
  3. Gunakan fail yang diekstrak mengikut keperluan dalam aplikasi anda.

Walaupun pendekatan ini mungkin berfungsi, sifatnya yang serampangan mencadangkan ia harus digunakan dengan berhati-hati.

Atas ialah kandungan terperinci Bagaimana untuk mengakses sumber terbenam dalam JAR secara konsisten?. 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