Rumah > Java > javaTutorial > teks badan

Mengapa Aplikasi But Spring Saya Gagal Mencari Sumber Classpath Apabila Dijalankan sebagai JAR?

Patricia Arquette
Lepaskan: 2024-11-03 11:25:02
asal
228 orang telah melayarinya

Why Does My Spring Boot Application Fail to Find Classpath Resources When Run as a JAR?

Sumber Classpath Tidak Ditemui Semasa Berjalan sebagai JAR

Isu ini boleh dihadapi semasa memuatkan sumber classpath menggunakan anotasi @Value dalam Spring Aplikasi but. Walaupun ia berfungsi dengan betul apabila dijalankan daripada IDE seperti STS, menjalankan fail jar yang dijana melalui pakej mvn menghasilkan FileNotFoundException.

Menangani Isu

Alasan asasnya ialah sumber itu .getFile() menjangkakan sumber akan tersedia secara langsung pada sistem fail. Walau bagaimanapun, apabila dijalankan sebagai JAR, sumber dibungkus dalam arkib, menjadikan pendekatan itu tidak berkesan.

Penyelesaian

Untuk menyelesaikan isu ini, gantikan getFile() dengan getInputStream (). Kaedah ini membolehkan anda mengakses kandungan sumber tanpa mengira lokasinya. Berikut ialah kod yang diubah suai:

<code class="java">@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application implements CommandLineRunner {

    private static final Logger logger = Logger.getLogger(Application.class);

    @Value("${message.file}")
    private Resource messageResource;

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    public void run(String... arg0) throws Exception {
        // both of these work when running as Spring boot app from STS, but
        // fail after mvn package, and then running as java -jar
        testResource(new ClassPathResource("message.txt"));
        testResource(this.messageResource);
    }

    private void testResource(Resource resource) {
        try {
            InputStream inputStream = resource.getInputStream();
            logger.debug("Found the resource " + resource.getFilename());
        } catch (IOException ex) {
            logger.error(ex.toString());
        }
    }
}</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa Aplikasi But Spring Saya Gagal Mencari Sumber Classpath Apabila Dijalankan sebagai JAR?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan