Не удается запустить Jetty во встроенном режиме
Я пытаюсь запустить Jetty во встроенном режиме, чтобы развернуть файл войны. Я использую Jetty lib версии 9.4.6
У меня есть следующая задача, созданная в Gradle для запуска Jetty и развертывания веб-приложения.
println 'Starting Jetty............'
project.ext.server = new Server();
ServerConnector connector = new ServerConnector(project.ext.server);
connector.setPort(jettyPort);
project.ext.server.addConnector(connector);
WebAppContext webapp = new WebAppContext()
webapp.setContextPath('/')
def warPath = 'build/libs/';
warPath += 'test-' + project.version + '.war';
println("Deploying WAR File : --> ${warPath}");
webapp.setWar(warPath)
project.ext.server.setHandler(webapp);
project.ext.server.start();
println 'Server started, waiting...'
new StopMonitor(jettyStopPort, project.ext.server).start();
println 'Jetty started.'
но приведенный выше скрипт завершается с ошибкой
Причина: java.lang.NoClassDefFoundError: Не удалось инициализировать класс org.eclipse.jetty.server.session.SessionHandler
Точная строка из сценария, который терпит неудачу,
WebAppContext webapp = new WebAppContext()
Даже если я сохраню эту строку как одну строку в сценарии и удаляю все, я получаю ту же ошибку.
Интересно, что класс, на который он жалуется, присутствует в джет-файле джет-сервера. Тот же скрипт, который используется для работы с libty 8.1
Примечание. Чтобы скрипт работал с Jetty 9.4, мне пришлось использовать класс ServerConnector вместо BlockingConnectot, который был удален в Jetty 9.4, остальная часть сценария такая же.
Я не уверен, почему это не удалось.
1 ответ
Возможно, вам не хватает необходимых файлов JAR.
Настоятельно рекомендуем вам использовать правильный инструмент сборки, у вас есть из чего выбирать.
Вот список зависимостей jar (в виде дерева) для примера проекта в...
https://github.com/jetty-project/embedded-servlet-3.1
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ embedded-servlet-3.1 ---
[INFO] org.eclipse.jetty.demo:embedded-servlet-3.1:war:1-SNAPSHOT
[INFO] +- javax.servlet:javax.servlet-api:jar:3.1.0:compile
[INFO] +- org.eclipse.jetty:jetty-webapp:jar:9.4.6.v20170531:compile
[INFO] | +- org.eclipse.jetty:jetty-xml:jar:9.4.6.v20170531:compile
[INFO] | | \- org.eclipse.jetty:jetty-util:jar:9.4.6.v20170531:compile
[INFO] | \- org.eclipse.jetty:jetty-servlet:jar:9.4.6.v20170531:compile
[INFO] | \- org.eclipse.jetty:jetty-security:jar:9.4.6.v20170531:compile
[INFO] | \- org.eclipse.jetty:jetty-server:jar:9.4.6.v20170531:compile
[INFO] | +- org.eclipse.jetty:jetty-http:jar:9.4.6.v20170531:compile
[INFO] | \- org.eclipse.jetty:jetty-io:jar:9.4.6.v20170531:compile
[INFO] \- org.eclipse.jetty:jetty-annotations:jar:9.4.6.v20170531:compile
[INFO] +- org.eclipse.jetty:jetty-plus:jar:9.4.6.v20170531:compile
[INFO] | \- org.eclipse.jetty:jetty-jndi:jar:9.4.6.v20170531:compile
[INFO] +- javax.annotation:javax.annotation-api:jar:1.2:compile
[INFO] +- org.ow2.asm:asm:jar:5.1:compile
[INFO] \- org.ow2.asm:asm-commons:jar:5.1:compile
[INFO] \- org.ow2.asm:asm-tree:jar:5.1:compile