我正在使用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的桌面上查找文件。
如果问题不够清楚,请告诉我。任何帮助将不胜感激。
答案 0 :(得分:0)
尝试获取相对于类路径的资源。您已将数据文件夹包含在我认为的类路径中......然后您可以执行以下操作:
getClass().getResource("/data/xmlFile.xml")
答案 1 :(得分:0)
您是否已将maven配置为将data
文件夹的内容与您的工件捆绑在一起?如果您未与此文件夹特别结婚,只需将其放入/src/main/resources
并将其称为/filename.xml
作为资源名称