sprinboot打包jar後讀取不到/resource/data/ip2region.xdb的文件.

sprinboot打包jar後讀取不到/resource/data/ip2region.xdb的文件.


解決1:文件複製到項目外,直接用路徑訪問.

解決2: 如果文件必須再項目裏,打包要包含,可以用代碼從jar包裏複製到服務器上.
1:maven打包要添加你的文件
<build>
<finalName>${project.artifactId}</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>*.xml</include>
<include>*.txt</include>
<include>*.properties</include>
<include>*.yml</include>
<include>mapper/*.xml</include>
<include>static/**</include>
<include>data/ip2region.xdb</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
2:打包後,文件jar包裏,不在你的目錄裏.可以從jar包了複製過去.
//項目打包成jar包所在的根路徑
String rootPath = applicationHome.getSource().getParentFile().toString();
String configFilePath = rootPath + "/data/ip2region.xdb";
File configFile = new File(configFilePath);
if (!configFile.exists()) {
try {
//獲取類路徑下的指定文件流 (項目目錄下的: /resource/data/ip2region.xdb)
InputStream in = this.getClass().getClassLoader().getResourceAsStream("data/ip2region.xdb");
FileUtils.copyInputStreamToFile(Objects.requireNonNull(in, "/data/ip2region.xdb文件找不到"), configFile);
} catch (IOException e) {
//throw new IllegalArgumentException("保存文件證書失敗->" + e.getMessage());
log.info("保存文件數據文件ip2region失敗({}): {}", ip, e);
}
}
log.info("數據文件ip2region.xdb地址:{}", configFilePath);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章