作者:形同陌路2502906543 | 来源:互联网 | 2024-11-02 00:32
在多模块项目中,项目A作为一个独立的工具包,不依赖于任何第三方库。其目录结构如下:`--src--main--java--resources`。当将项目A打包成JAR文件后,发现无法正确访问`resources`目录下的文件资源。这一问题可能源于JAR文件的构建配置或类路径设置不当,需要仔细检查Maven或Gradle的构建脚本,确保资源文件被正确包含并加载。
一个项目是分模块开发的,项目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