java包含json文件并将其读入生成的maven中。jar文件
我使用maven-assembly-plugin
命令行生成一个包含所有依赖项的jar文件:
mvn clean compile assembly:single
它将目录src/main/java/
中的所有.java
文件编译为target/
中的.jar
文件
我的src/main/java/
目录中有一个类,它使用以下代码读取位于他旁边的.json
文件:
File file = new File("src/main/java/path/to/test.json");
content = FileUtils.readFileToString(file, "UTF-8");
因此,我需要在生成的.jar
中访问这个.json
文件
我使用<build>
中的此配置在maven中包含此.json
:
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>src/main/java/path/to/test.json</include>
</includes>
</resource>
</resources>
所有东西都编译成功,当我尝试使用java -jar ./target/my-jar-file.jar
运行target/
目录中的.jar
文件时,效果非常好
问题是,现在我希望能够将我的.jar
文件移动到任何我想要的地方。但当我在另一个地方执行它时,会收到错误消息:
java.io.FileNotFoundException: File 'src/main/java/path/to/test.json' does not exist
因此显然.json
文件没有包含在我生成的.jar
中
有人知道我错过了什么吗
# 1 楼答案
您需要从类路径(假设依赖项jar位于类路径上)而不是从文件系统加载文件。请参阅此答案了解如何做到这一点:
How to really read text file from classpath in Java
# 2 楼答案
尝试提取测试数据。json文件从jar到当前项目中使用maven插件的resources文件夹,请重试
注意:如果jar存在于本地存储库而不是任何中央存储库中,请使用下面的标记
${project.build.directory}/localrepo