Запуск сервера Jetty 7 в eclipse?
Я пытаюсь настроить Eclipse для запуска и развертывания моих проектов на сервере Jetty 7 (самая старая версия, доступная из http://download.eclipse.org/jetty/). Я загрузил Jetty 7 и распаковал его, и я установил плагин Jetty из списка доступных серверных адаптеров, но когда я пытаюсь настроить новый сервер Jetty, список типов серверов содержит только "Jetty 6". Если я использую это и указываю его на время выполнения моего сервера, когда я пытаюсь запустить его, я получаю следующую ошибку:
java.lang.NoClassDefFoundError: org/mortbay/start/Main
Caused by: java.lang.ClassNotFoundException: org.mortbay.start.Main
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Exception in thread "main"
Я предполагаю, что мне нужен другой адаптер для запуска Jetty 7, но я не знаю, где его найти.
Ответы
Ответ 1
Проблема заключается в том, что имя пакета изменилось с переходом на Eclipse, и люди Jetty все еще заняты.
Самый простой способ - загрузить Jetty 6 из Codehaus (http://dist.codehaus.org/jetty/), распаковать его где-нибудь и использовать адаптер Jetty 6.
Ответ 2
Лучше, чем использовать адаптеры WTP, я предпочитаю использовать встроенный причал.
Я просто создаю обычный проект java, позволю назвать "embedded-jetty". Я делаю исходный проект webapp требованием к этому проекту в разделе "Проекты"
Java Build Путь к свойствам проекта. Чем я создаю класс, который запускает экземпляр причала, например:
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.WebAppContext;
public class JettyServer {
public static void main(String[] args) {
Server server = new Server(8080);
WebAppContext context = new WebAppContext();
context.setResourceBase("../webapp-project/WebContent");
context.setDescriptor("../webapp-project/WebContent/WEB-INF/web.xml");
context.setContextPath("/");
context.setParentLoaderPriority(true);
server.setHandler(context);
try {
server.start();
server.join();
} catch (Exception e) {
e.printStackTrace();
}
}
}
В проекте embedded-jetty я создаю папку "lib" и копирую все библиотеки из папки jetty/lib, а затем добавляю библиотеки в Библиотеки свойств проекта.
Запуск и отладка встроенных встраиваемых приложений отлично подходит для меня, перезагрузка jsp и класса работает как прелесть
Ответ 3
Там новый (официальный!) плагин Jetty WTP, поддерживающий Jetty 7.x и 8.x: http://wiki.eclipse.org/Jetty_WTP_Plugin
Ответ 4
Плагин Eclipse Run-Jetty-Run имеет хорошую поддержку как для Jetty7, так и для Jetty 8,
и проще в использовании, чем WTP Eclipse для меня.
Стоит попробовать.:)
http://code.google.com/p/run-jetty-run/
Ответ 5
Вы можете использовать плагин Jetty Maven для настройки сервера причала в своем затмении очень легко. Включите в себя следующие элементы pom.xml
<jetty.version>9.3.0.M1</jetty.version>
<!-- JETTY DEPENDENCIES -->
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>${jetty.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<version>${jetty.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-webapp</artifactId>
<version>${jetty.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlets</artifactId>
<version>${jetty.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-ant</artifactId>
<version>${jetty.version}</version>
</dependency>
и в ваших управления плагинами pom,
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${jetty.version}</version>
<configuration>
<stopKey>keyStop</stopKey>
<stopPort>8181</stopPort>
<httpConnector>
<host>0.0.0.0</host> //also localhost or IP address
<port>8080</port>
</httpConnector>
</configuration>
</plugin>
Или вы можете выделить конфигурацию сервера в отдельных файлах jetty-.xml
. Подробнее см. Настройка контейнера причала.
Теперь щелкните правой кнопкой мыши ваш проект maven и запустите цель,
mvn jetty:run
чтобы запустить сервер по умолчанию 8080. И чтобы остановить сервер,
mvn jetty:stop
Если не указано, Jetty создаст экземпляр ServerConnector прослушивание порта 8080
. Вы можете изменить этот номер порта по умолчанию на используя системное свойство jetty.http.port
в командной строке, для пример, mvn -Djetty.http.port=9999 jetty:run
. Обратите внимание, что поскольку jetty-9.0 больше невозможно настроить https непосредственно в pom.xml: вам нужно использовать jetty xml config файлы для этого.
Узнайте больше о целях и конфигурации на причале,