无法使用嵌入式Jetty设置上下文路径

时间:2013-08-10 21:53:12

标签: classloader embedded-jetty

我尝试将嵌入式jetty打包到jar文件中。但是所有的时间我都无法访问我的“家”jar目录,所有的html文件都在这里。这是我的启动器文件,我试图使用类加载器资源路径,但它始终为空。

我找到了几个获取jar路径的解决方案,但我需要访问jar中的文件,例如我的网页。

    SelectChannelConnector connector = new SelectChannelConnector();
    connector.setPort(8080);
    server.addConnector(connector);
    ClassLoader cl = Launcher.class.getClassLoader();
    System.out.println(cl);
    URL f = cl.getResource("/index.html");
    System.out.println(f);
    String webDir = f==null ? "/" : f.toExternalForm();
    System.out.println(webDir);
    WebAppContext context = new WebAppContext("/", "/");
    context.setResourceBase(webDir);

如果有人知道如何在我的罐子里设置正确的路径,请帮助我。

1 个答案:

答案 0 :(得分:0)

你可能想这样做......

public static void main(String[] args) throws Exception
{
    Server server = new Server();

    Connector connector = new SelectChannelConnector();
    connector.setPort(8080);
    // Use only 1 connector
    server.setConnectors(new Connector[] { connector });

    // Figure out what path to serve content from
    ClassLoader cl = Launcher.class.getClassLoader();
    URL f = cl.getResource("/index.html");
    String webDir = System.getProperty("user.dir");
    if (f != null)
    {
        webDir = f.toExternalForm();
    }

    WebAppContext webapp = new WebAppContext();
    webapp.setContextPath("/");
    webapp.setResourceBase(webDir);

    server.setHandler(webapp); // add webapp to server

    server.start(); // start server on its own thread
    server.join();  // wait for server thread to stop
}