Java 如何指定war文件中资源的路径?
我已经使用文本编辑器使用maven和spring框架构建了我的项目。 我能够使用终端上的命令在根文件夹中运行项目Java 如何指定war文件中资源的路径?,java,spring,maven,ubuntu-14.04,relative-path,Java,Spring,Maven,Ubuntu 14.04,Relative Path,我已经使用文本编辑器使用maven和spring框架构建了我的项目。 我能够使用终端上的命令在根文件夹中运行项目 mvn spring-boot:run 我已经使用java语句引用了java文件中的源文件 Document doc = builder.parse("src/main/resources/data/resorts.xml"); 一切正常 当我使用命令将整个项目导出为war文件时 mvn package java -jar filename.war 终端上 mvn sprin
mvn spring-boot:run
我已经使用java语句引用了java文件中的源文件
Document doc = builder.parse("src/main/resources/data/resorts.xml");
一切正常
当我使用命令将整个项目导出为war文件时
mvn package
java -jar filename.war
终端上
mvn spring-boot:run
我在根目录的目标文件夹中得到一个war文件
我使用命令运行war文件
mvn package
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到您的/application.jar//filename.txt的路径
如果您尝试创建指向该路径的文件对象或流,它将失败,出现FileNotFoundException
如果可能,您应该更改类文档以接收文件内容或InputStream
。
然后可以使用类加载器获取文件的流,而不是路径
就你而言:
InputStream is = Application.class.getClassLoader()
.getResourceAsStream("data/resorts.xml");
然后使用
is
对象创建文档。使用ClassPathResource
-egnewclasspathResource(“/data/resorts.xml”)
,然后使用InputStream
s.I努力尝试并替换语句文档doc=builder.parse(“src/main/resources/data/resorts.xml”);语句Resource Resource=newclasspathresource(“/data/resorts.xml”);Document doc=builder.parse(IOUtils.toString(新类路径资源(“包/资源”).getInputStream());但仍然会出现错误java.io.FileNotFoundException:类路径资源[package/resource]无法打开,因为它不存在。请提供帮助?我应该如何用java解析该文件?您可以添加完整的stacktrace吗?使用资源时不应抛出FileNotFoundException
。