項目在eclipse運行是可以的,但是打成war包到線上報錯:
FileNotFoundException: class path resource [static/apiclient_cert.p12] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/home/****-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/static/apiclient_cert.p12
代碼:
ClassPathResource classPathResource = new ClassPathResource("apiclient_cert.p12");
到打的war包下BOOT-INF/classes!/static/apiclient_cert.p12是能找到該文件的,但是程序運行時卻沒找到。后來百度了一下,發現在線下運行時,是能到本地磁盤里找到該資源的。但是到線上該文件是存在於war包文件資源里,而不是真實存在於磁盤路徑上。
//1.通過getResourceAsStream()指定要加載的文件與當前類所在路徑是一致的,從而獲取到文件流
InputStream stream = getClass().getClassLoader().getResourceAsStream("static/apiclient_cert.p12"); File targetFile = new File("apiclient_cert.p12"); try {
//將讀取到的類容存儲到臨時文件中,后面就可以用這個臨時文件訪問了 FileUtils.copyInputStreamToFile(stream, targetFile); } catch (IOException e) { e.printStackTrace(); }
