首頁 > Java > java教程 > 為什麼我的 Spring Boot 應用程式在作為 JAR 運行時無法找到類路徑資源?

為什麼我的 Spring Boot 應用程式在作為 JAR 運行時無法找到類路徑資源?

Patricia Arquette
發布: 2024-11-03 11:25:02
原創
247 人瀏覽過

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

作為JAR 運行時找不到類路徑資源

在Spring 中使用@Value 註解加載類路徑資源時可能會遇到此問題啟動應用程式。雖然從 STS 等 IDE 運行時它可以正常運行,但運行透過 mvn 套件產生的 jar 檔案會導致 FileNotFoundException。

解決問題

根本原因是該資源.getFile() 期望資源在檔案系統上直接可用。但是,當作為 JAR 運作時,資源會打包在檔案中,導致該方法無效。

解決方案

要解決此問題,請將 getFile() 替換為 getInputStream ()。此方法可讓您存取資源的內容,無論其位置為何。這是修改後的程式碼:

<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>
登入後複製

以上是為什麼我的 Spring Boot 應用程式在作為 JAR 運行時無法找到類路徑資源?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板