springboot使用jar包方式啟動,找不到resources目錄中的配置文件(運行時)FileNotFoundException


將springboot項目打包成jar包,使用 java -jar jar包進行啟動,富文本框使用ckeditor+ckfinder;

因為ckfinder自定義配置文件了,上傳圖片時出現了異常

DefaultResourceLoader loader = new DefaultResourceLoader();
            String absolutePath = loader.getResource(this.xmlFilePath).getFile().getAbsolutePath();

拋出異常:

java.io.FileNotFoundException: class path resource [ckfinder-config.xml] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/E:/Development/VCS/GIT/dmahzForum/dmahzForum/target/dmahz-forum-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/ckfinder-config.xml
        at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:217)
        at org.springframework.core.io.AbstractFileResolvingResource.getFile(AbstractFileResolvingResource.java:131)
        at cn.dmahz.config.CKFinderConfiguration.checkIfReloadConfig(CKFinderConfiguration.java:197)
        at com.ckfinder.connector.configuration.ConfigurationFactory.getConfiguration(ConfigurationFactory.java:59)
        at com.ckfinder.connector.configuration.ConfigurationPathBuilder.getBaseDir(ConfigurationPathBuilder.java:55)
        at com.ckfinder.connector.configuration.ConfigurationFactory.getBaseFolder(ConfigurationFactory.java:189)
        at com.ckfinder.connector.configuration.ConfigurationFactory.updateResourceTypesPaths(ConfigurationFactory.java:151)

,測試了好幾種方法,結果是只能通過getInputStream()流的方式獲取文件內容,否則就會拋出上面所述的異常;;;

更改之后如下:

ClassPathResource classPathResource = new ClassPathResource("ckfinder-config.xml");
            String path1 = classPathResource.getPath();
            InputStream inputStream = classPathResource.getInputStream();
            System.err.println("path1:"+path1);
            System.err.println("inputStream:"+inputStream+",Size:"+inputStream.available());

證明可以運行沒有問題

 

 

詳細說明:https://blog.csdn.net/u013467442/article/details/88807557


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM