我有一个可行的解决方案-我正在发布解决方法,希望这种方法能够激发出正确的方法。我仍然相信应该有一种方法可以相对于JAR在JAR中指定一个文件夹。
无论如何,此方法有效。我用它来从JAR内部存储静态Web内容。本质上,我让Java解析了正在运行的JAR资源的绝对路径,并将该路径名传递给Jetty。当我这样做时,Jetty将显示我的“
helloWorld.html”欢迎文件。
String baseStr = "/webapp"; //... contains: helloWorld.html, login.html, etc. and folder: other/xxx.html URL baseUrl = SplitFileServerRunner.class.getResource( baseStr ); String basePath = baseUrl.toExternalForm(); .... resource_handler.setDirectoriesListed(true); //... just for testing resource_handler.setWelcomeFiles(new String[]{ "helloWorld.html" }); resource_handler.setResourcebase( basePath ); LOG.info("serving: " + resource_handler.getbaseResource());在欢迎文件中,我输入了特定的文本来标识文件的来源(在resources文件夹中)。在浏览器中:
- 本地主机:8080
服务helloWorld.html文件。
- 本地主机:8080 / other
显示JAR文件中 jar:/ webapp / other / 目录的目录列表。这依赖于在服务器运行时 不 更改JAR。
在Linux上,如果有人 CP -sA在顶部运行JAR的新的JarFile,码头给出:
HTTP ERROR: 500 Problem accessing /. Reason: java.lang.NullPointerException
而且您无法再访问页面。那是出乎意料的(显然,JAR保持打开状态)。好消息是,如果您使用 mv -s jarfile:
- mv fileserver.jar fileserverXX.jar
Jetty愉快地继续从(重命名)fileserverXX.jar内容提供服务。我可以为此感到高兴。但是我仍然想知道等效的相对路径以匹配绝对文件名。



