gpt4 book ai didi

java - 如何指定 war 文件中资源的路径?

转载 作者:搜寻专家 更新时间:2023-11-01 03:35:13 24 4
gpt4 key购买 nike

我已经使用文本编辑器使用 maven 和 spring 框架构建了我的项目。我可以使用终端上的命令在根文件夹中运行项目

mvn spring-boot:run

我已经使用 java 语句在 java 文件中引用了我的源文件

Document doc = builder.parse("src/main/resources/data/resorts.xml");

一切正常。

当我使用命令将整个项目导出为 war 文件时

mvn package

在终端上

我在根目录的目标文件夹中得到了一个war文件

我使用命令运行war文件

java -jar filename.war

没有编译错误,但在运行时显示错误 java.io.FileNotFoundException

我想我没有正确指定引用文件的路径

您能否提及如何在路径字符串中提及相对路径以使其能够从 war 文件运行。

我的目录结构是

.
|-- src
| `-- main
| |-- java
| | `-- hello
| | `-- org
| | `-- json
| `-- resources
| |-- data
| `-- templates
`-- target
|-- classes
| |-- data
| |-- hello
| |-- org
| | `-- json
| `-- templates
|-- generated-sources
| `-- annotations
|-- gs-handling-form-submission-0.1.0
| |-- META-INF
| `-- WEB-INF
| |-- classes
| | |-- data
| | |-- hello
| | |-- org
| | | `-- json
| | `-- templates
| `-- lib
|-- maven-archiver
`-- maven-status
`-- maven-compiler-plugin
`-- compile
`-- default-compile

33 directories

java 文件在 hello 目录中。

最佳答案

您可能遇到从 URI 类接收到位于 jar 中的文件的路径问题。

Application.class.getClassLoader().getResource("path-to/filename.txt").getPath()

输出:/path-to-your/application.jar!/path-to/filename.txt

如果您尝试为该路径创建文件对象或流,它将失败并返回 FileNotFoundException

如果可能,您应该更改类 Document 以接收文件内容或 InputStream。然后您可以使用类加载器获取文件的流而不是路径。

在你的情况下:

InputStream is = Application.class.getClassLoader()
.getResourceAsStream("data/resorts.xml");

然后使用 is 对象创建文档。

关于java - 如何指定 war 文件中资源的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34082713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com