sprinboot打包jar后读取不到/resource/data/ip2region.xdb的文件.
(2022-10-31 19:31:42)sprinboot打包jar后读取不到/resource/data/ip2region.xdb的文件.
解决1:文件复制到项目外,直接用路径访问.
解决2: 如果文件必须再项目里,打包要包含,可以用代码从jar包里复制到服务器上.
1:maven打包要添加你的文件
${project.artifactId}
src/main/resources
*.xml
*.txt
*.properties
*.yml
mapper/*.xml
static/**
data/ip2region.xdb
true
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);
前一篇:Redisson分布式锁实现