Я делаю Java-приложение, в которое встроен веб-сервер Jetty, который, в свою очередь, обслуживает контент, разработанный с помощью Google Web Toolkit. Все работает нормально при запуске в Eclipse, но когда я экспортирую его как файл jar, все, что я получаю, это сообщение об ошибке Jetty, говорящее «Файл не найден».
Сервер Jetty запускается так:
WebAppContext handler = new WebAppContext();
handler.setResourceBase("./war");
handler.setDescriptor("./war/WEB-INF/web.xml");
handler.setContextPath("/");
handler.setParentLoaderPriority(true);
server.setHandler(handler);
try {
server.start();
server.join();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Я подозреваю, что проблема заключается в относительных путях, используемых в handler.setResourceBase () и handler.setDescriptor (). Я нашел и проверил множество решений, но пока безрезультатно. В частности, я пытался использовать что-то вроде getClass (). GetResource ("./ war"). ToExternalForm (), но это просто вызывает исключения Null.
Я тоже пробовал:
ProtectionDomain protectionDomain = Start.class.getProtectionDomain();
URL location = protectionDomain.getCodeSource().getLocation();
но это только приводит к тому, что Jetty обслуживает список каталогов классов Java.
Есть ли способ сделать это?