![](/img/trans.png)
[英]How can I specify “Context path” on Tomcat 8 inside META-INF/context.xml in java war file?
[英]How to specify path to resources inside a war file?
我使用文本編輯器使用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
如果您嘗試創建File對象或Stream到該路徑,它將失敗並出現FileNotFoundException
如果可能,您應該更改類Document以接收文件或InputStream
。 然后,您可以使用類加載器來獲取文件的流而不是路徑。
在你的情況下:
InputStream is = Application.class.getClassLoader()
.getResourceAsStream("data/resorts.xml");
然后使用is
對象創建Document。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.