Невозможно установить контекстный путь со встроенным Jetty

Я пытаюсь упаковать встроенный причал в файл jar. Но все время я не могу получить доступ к своему «домашнему» каталогу jar, где находится весь html-файл. Вот мой файл запуска, я пытался использовать путь к ресурсу загрузчика классов, но все время он нулевой.

Я нашел несколько решений для получения пути к моей банке, но мне нужно получить доступ к файлам в банке, например, к моим веб-страницам.

    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);

Если кто-то знает, как установить правильный путь в мою банку, пожалуйста, помогите мне.


person Andrew    schedule 10.08.2013    source источник


Ответы (1)


Возможно, вы захотите сделать это таким образом...

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
}
person Joakim Erdfelt    schedule 12.08.2013