一个项目是分模块开发的,项目A是个工具包,没有第三方依赖,目录如下:
–src
–main
–java
–resources
–db
–sqlite.db
A的一个函数功能就是将A的resources目录下的db/sqlite.db文件拷贝到指定的目录下
InpuStream is = this.getClass().getClassLoader().getResourceAsStream(“/db/sqlite.db”);
Files.copy(is,dirPath);
现有一个SpringBoot项目B,通过maven引入A
B在idea运行时A没有报错
B打包为jar包后,命令行运行A报错
获取到的InputStream为null,Files.copy报NPE
将B打包后的jar解压后,lib目录下的A.jar内是有文件的
这个路径究竟该如何获取?
“db/sqlite.db”和”/db/sqlite.db”都不行
this.getClass().getResourceAsStream(“”);
也都不行
用Guava的Resources工具也不好使,这种难不成写代码一套,打包一套吗?
A 的pom文件如下
src/main/java
**/*.yml
**/*.properties
**/*.xml
**/*.db
false
src/main/resources
**/*.yml
**/*.properties
**/*.xml
**/*.db
false
B 的pom文件如下,由于Parent是自己的项目,没有继承spring-boot-parent-starter,所以B的pom多写了些配置
access\_server
src/main/java
**/*.yml
**/*.properties
**/*.xml
**/*.db
false
src/main/resources
**/*.yml
**/*.properties
**/*.xml
**/*.db
false
org.springframework.boot
spring-boot-maven-plugin
com.gree.hvac.access.AccessApplication
boot
ZIP
true
true
repackage