运行Web应用程序时使用的文件路径错误

时间:2015-02-13 23:33:32

标签: java spring relative-path spring-tool-suite

我正在使用Spring工具套件开发Spring应用程序。我的基本目标是读取现有的xml文件并用它做一些事情。 我面临的问题是,在服务器(tomcat 8.0.18)上运行代码时,我无法使用相对文件路径。但是,如果我测试与Java应用程序相同的代码,它运行正常 我的文件夹结构 -

RootFolder
-- src/main/java
-- -- package_name
-- -- -- FileAccessingClass.java
-- data
-- -- xmlFile.xml

我得到以下错误 -

/Users/amit/Desktop/sts-bundle/sts-3.6.3.SR1/STS.app/Contents/MacOS/data/xmlFile.xml (No such file or directory)
Feb 13, 2015 3:27:29 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [appServlet] in context with path [/metaract] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException
    at com.crmantra.metaract.services.ServiceRequests.prepareData(ServiceRequests.java:49)
    at com.crmantra.metaract.services.ServiceRequests.sendRequest(ServiceRequests.java:34)
    at com.crmantra.metaract.controllers.LoginController.login(LoginController.java:27)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

我不明白它为什么要在安装了STS的桌面上查找文件。
如果问题不够清楚,请告诉我。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

尝试获取相对于类路径的资源。您已将数据文件夹包含在我认为的类路径中......然后您可以执行以下操作:

getClass().getResource("/data/xmlFile.xml")

答案 1 :(得分:0)

您是否已将maven配置为将data文件夹的内容与您的工件捆绑在一起?如果您未与此文件夹特别结婚,只需将其放入/src/main/resources并将其称为/filename.xml作为资源名称