Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 远程服务器上的Maven web应用程序:缺少html文件_Java_Maven_Tomcat_Spark Java - Fatal编程技术网

Java 远程服务器上的Maven web应用程序:缺少html文件

Java 远程服务器上的Maven web应用程序:缺少html文件,java,maven,tomcat,spark-java,Java,Maven,Tomcat,Spark Java,我有一个使用Spark框架的Java/Maven web应用程序,我正试图使用Cargo插件将其部署到远程Tomcat服务器。我从来没有用Java做过这件事,而且我很难处理静态文件。我的分解战争的目录结构是: 应用程序名称 --META-INF --公开的 ----image.jpg ----html ------Index.html --WEB-INF 当我使用以下代码时: return "<html><body><img src='/app-name/publi

我有一个使用Spark框架的Java/Maven web应用程序,我正试图使用Cargo插件将其部署到远程Tomcat服务器。我从来没有用Java做过这件事,而且我很难处理静态文件。我的分解战争的目录结构是:

应用程序名称

--META-INF

--公开的

----image.jpg

----html

------Index.html

--WEB-INF

当我使用以下代码时:

return "<html><body><img src='/app-name/public/image.jpg' /></body></html>";
我遇到了一个FileNotFound异常。它可以在localhost上正常工作(渲染功能也可以正常工作)。我只是在远程服务器上找不到Index.html文件

对于那些熟悉的人来说,你知道没有太多的例子。我一直在努力弥补,我希望通过展示这张照片,我走上了正确的道路。有人有什么建议吗?我怀疑这一定是一个类路径问题,但我现在有点困惑。我只展示了最相关的片段;我可以发布更多,如果需要的话

编辑:例外情况是:

java.io.FileNotFoundException: /app-name/public/html/Index.html (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at java.io.FileInputStream.<init>(FileInputStream.java:97)
    at java.io.FileReader.<init>(FileReader.java:58)
    at com.render.Render.parseFile(Render.java:35)
    at com.render.Render.render(Render.java:23)
    at com.main.Main$1.handle(Main.java:41)
    at spark.webserver.MatcherFilter.doFilter(MatcherFilter.java:136)
    at spark.servlet.SparkFilter.doFilter(SparkFilter.java:98)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:722)
java.io.FileNotFoundException:/app name/public/html/Index.html(没有这样的文件或目录)
在java.io.FileInputStream.open(本机方法)
位于java.io.FileInputStream。(FileInputStream.java:138)
位于java.io.FileInputStream。(FileInputStream.java:97)
位于java.io.FileReader。(FileReader.java:58)
位于com.render.render.parseFile(render.java:35)
位于com.render.render.render(render.java:23)
位于com.main.main$1.handle(main.java:41)
位于spark.webserver.MatcherFilter.doFilter(MatcherFilter.java:136)
位于spark.servlet.SparkFilter.doFilter(SparkFilter.java:98)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
位于org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
位于org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
位于org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
运行(Thread.java:722)

首先,您不能依赖相对路径。您不知道正在执行的JVM在哪里,而是选择设置当前工作目录


此外,servlet规范不允许您直接访问文件,并且您不能依赖正在爆发的战争。这类源的自然位置是在类路径上,读作资源。

完整的
FileNotFoundException
是什么意思,完整路径?@SotiriosDelimanolis FileNotFoundexception不包括未找到的文件名。@Thorbjørnravandersen它应该显示类似于
java.io.FileNotFoundexception:\my\file.txt(系统找不到指定的路径)
您确定它会显示完整路径吗?添加到正文中。有几个问题,谢谢你花时间回答:1。为什么我不能总是依赖战争的爆发?什么时候不会?2.你能给我一个提示,告诉我应该做什么吗?我看到了很多Class.getResource()的帖子。这是我应该做的事情吗?因为这取决于每个供应商如何做。你应该做什么,很大程度上取决于你实际需要做什么,以及你为什么需要这样做。
java.io.FileNotFoundException: /app-name/public/html/Index.html (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at java.io.FileInputStream.<init>(FileInputStream.java:97)
    at java.io.FileReader.<init>(FileReader.java:58)
    at com.render.Render.parseFile(Render.java:35)
    at com.render.Render.render(Render.java:23)
    at com.main.Main$1.handle(Main.java:41)
    at spark.webserver.MatcherFilter.doFilter(MatcherFilter.java:136)
    at spark.servlet.SparkFilter.doFilter(SparkFilter.java:98)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:722)