1

我有以下代码:

    Server server = new Server(9090);

    final URL warUrl = Main.class.getClassLoader().getResource("com/domain/webapps/app");
    final String warUrlString = warUrl.toExternalForm();
    WebAppContext wac = new WebAppContext(warUrlString, "/app");

    server.setHandler(wac);

我在包中有Main课程。com.domain

jsp 和 html 都在com.domain.webapps.app包中。

当在 Netbeans 中(或java -cp <classpath> com.domain.Main在分解的 jar 上)运行时,应用程序可以完美运行。

如果我运行 jar ( java -jar app.jar),则将提取的内容com.domain.webapps.app提取到/tmp/Jetty_something/webapp/,因此完整路径是/tmp/Jetty_something/webapp/com/domain/webapps/app/

但是,当我提出请求时http://localhost:9090/app/file.jsp,Jetty 会尝试从/tmp/Jetty_something/webapp/file.jsp(错误的位置 :-()获取文件

我在哪里可以做什么?

码头版本是 6.1.26

4

1 回答 1

0

看看这篇文章。该 URL 由

ProtectionDomain protectionDomain = Start.class.getProtectionDomain();
URL location = protectionDomain.getCodeSource().getLocation();

这适用于我的war项目,也可能适用于您的jar用例。

于 2011-05-04T20:17:43.043 回答