【发布时间】:2021-03-18 06:10:54
【问题描述】:
我正在尝试访问打包在同一个 .jar 文件 (testJetty.jar) 中的静态资源 (例如 first.html),该文件还有一个启动码头 (v.8) 服务器 (MainTest.java) 的类.我无法正确设置资源库。
我的jar文件(testJetty.jar)的结构: testJetty.jar
first.html
MainTest.java
== 在本地机器上工作正常,但是当我将它包装在 jar 文件中然后运行它时,它不起作用,出现“404:找不到文件”错误。
我尝试使用以下值设置资源库,但均失败:
a) 尝试将其设置为 .
resource_handler.setResourceBase("."); // Results in directory containing the jar file, D:\Work\eclipseworkspace\testJettyResult
b) 尝试从 getResource 获取它
ClassLoader loader = this.getClass().getClassLoader();
File indexLoc = new File(loader.getResource("first.html").getFile());
String htmlLoc = indexLoc.getAbsolutePath();
resource_handler.setResourceBase(htmloc); // Results in D:\Work\eclipseworkspace\testJettyResult\file:\D:\Work\eclipseworkspace\testJettyResult\testJetty1.jar!\first.html
c) 尝试获取 webdir
String webDir = this.getClass().getProtectionDomain()
.getCodeSource().getLocation().toExternalForm();
resource_handler.setResourceBase(webdir); // Results in D:/Work/eclipseworkspace/testJettyResult/testJetty1.jar
这 3 种方法都不起作用。
任何帮助或替代方法将不胜感激
谢谢 阿巴斯
【问题讨论】:
标签: jar jetty embedded-jetty