我有一个使用 Spark 框架的 Java/Maven Web 应用程序,我正在尝试使用 Cargo 插件将其部署到远程 Tomcat 服务器。我从来没有使用 Java 做过这个,而且我很难处理静态文件。我的爆炸战争的目录结构是:
应用程序名称
-- 元信息
- 上市
---- 图像.jpg
---- html
------ 索引.html
-- 网络信息
当我使用以下代码时:
return "<html><body><img src='/app-name/public/image.jpg' /></body></html>";
我能够很好地渲染图像。我还可以通过访问 domain.com:8080/app-name/public/image.jpg 和 domain.com:8080/app-name/public/html/Index.html 来访问图像和 html 文件但是,当我尝试使用...呈现html
// location of the file on the server...
file = "/app-name/public/html" + file;
// location of the file on localhost
//file = "public/html/" + file;
BufferedReader buffer = new BufferedReader(new FileReader(file));
我遇到了 FileNotFoundException。它在 localhost 上运行良好(渲染功能也可以)。我只是在远程服务器上找不到 Index.html 文件。
对于那些熟悉Spark的人来说,你知道那里并没有太多的例子。我一边走一边编,我希望通过展示我走在正确轨道上的形象来做到这一点。有人有什么建议吗?我怀疑这一定是一个类路径问题,但我现在对此感到困惑。我只展示了最相关的片段;如果需要,我可以发布更多!
编辑:例外是:
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)