【发布时间】:2018-01-10 11:50:40
【问题描述】:
我是 Java 部署的新手,现在使用 JSON 文件存储一些数据并使用 new FileReader(file name) 调用 JSON 并解析并进行进一步处理。
问题:
1) 如果我在 new FileReader(file name) 中仅提供文件名,则显示文件未找到
Object obj = parser.parse(new FileReader("file.json"));
JSONArray arr = (JSONArray)obj;
Iterator i = arr.iterator();
这是堆栈跟踪:
java.io.FileNotFoundException: file.json (The system cannot find the file specified)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(Unknown Source)
at java.base/java.io.FileInputStream.<init>(Unknown Source)
at java.base/java.io.FileInputStream.<init>(Unknown Source)
at java.base/java.io.FileReader.<init>(Unknown Source)
at com.login.servlet.CheckAvailability.doGet(CheckAvailability.java:48)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Unknown Source)
如果我提供绝对路径,它可以正常工作,但我想提供相对路径。这样我就不必在 localhost 和部署的服务器上不断更改路径。
2) 我正在本地工作并尝试在服务器上部署。为此,我制作了 .war 文件。并在部署时不显示那些 JSON 文件
以下是用于可视化的屏幕截图。
look out for the file.json file on local host
look at the deployed folder where there is no file.json file (after making war file)
我尝试查看问题,但找不到确切的解决方案或我能理解的解决方案。
考虑到我是新手,请解释一下。
【问题讨论】: