2010-03-10 3 views
14

Я пытаюсь настроить Eclipse для запуска и развертывания моих проектов на сервере Jetty 7 (самая старая версия доступна от http://download.eclipse.org/jetty/). Я загрузил Jetty 7 и распаковал его, и я установил плагин Jetty из списка доступных серверных адаптеров, но когда я пытаюсь настроить новый сервер Jetty, список типов серверов содержит только «Jetty 6». Если я использую это и указать его на моем сервере выполнения, когда я пытаюсь запустить его, я получаю следующее сообщение об ошибке:Запуск Jetty 7 сервера в затмении?

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, но я понятия не имею, где его найти.

ответ

2

Проблема заключается в том, что имя пакета изменилось с переходом на Eclipse, и люди Jetty все еще заняты.

Ваш самый простой вариант - загрузить Jetty 6 из Codehaus (http://dist.codehaus.org/jetty/), распаковать его где-нибудь и использовать адаптер Jetty 6.

+4

Kind-иронично, что этот шаг, чтобы быть официальным затмение проект сделал более сложным использовать Jetty с eclipse, но, похоже, это так. Хорошо, вернемся к v6, я думаю. :( – user264636

+1

Новый адаптер Jetty работает очень хорошо с Jetty 7.2 –

+0

ørn: Какая версия нового адаптера и где вы его получили? У меня есть org.mortbay.jetty.serveradaptor_1.0.4 (который был установлен с помощью «Загрузка дополнительного сервера» адаптеры и которые также доступны по адресу http://www.webtide.com/eclipse/). С этим адаптером Eclipse предлагает мне только тип времени выполнения «Jetty 6», и если я попытаюсь использовать его с Jetty 7, я получаю такое же исключение, что и в вопросе выше. –

22

Лучше, чем использовать адаптеры WTP. Я предпочитаю использовать встроенный причал. Я просто создаю обычный проект java, назовем «embedded-jetty». Я делаю исходный проект webapp требованием к этому проекту в разделе «Проекты» пути построения Java для свойств проекта. Чем я создать класс, начать экземпляр пристани, как это:

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

На погруженных молах проекта создать «Lib» папка и скопировать все эти библиотеки из молы/Lib папки, а затем добавить эти библиотеки в библиотеках свойств проекта.

Запуск и отладка мола внедренный отлично работает для меня, СПЯ и класс перегрузочные работы как шарм

+0

Интересная идея. Я делал что-то похожее на это, но это оказалось с моими веб-приложениями, зависящими от причала, чего я хочу избежать. Однако у вашего подхода нет такой проблемы. Спасибо. – user264636

+0

Вы также можете использовать это приложение в тестовой папке, чтобы оно было доступно для всех, но не попадает в фактический файл jar – kubek2k

22

Там новый (официально!) Jetty WTP Плагин поддерживает Jetty 7.x и 8.x: http://wiki.eclipse.org/Jetty_WTP_Plugin

+0

Я просто нажал на вашу ссылку, и у него есть это обновление: «Поддержка этой функции была удалена с Jetty 9. Если вы чувствуете, что это должно быть возвращено, пожалуйста, сообщите об ошибке ». – skomisa

+0

Похоже, новый« официальный »способ заключается в развертывании на автономном сервере Jetty и использовании удаленной отладки: http://www.eclipse.org/jetty/documentation/current /debugging-with-eclipse.html –

1

Плагин Eclipse для Run-Jetty-Run имеет хорошую поддержку как Jetty7, так и Jetty 8, и проще в использовании, чем WTP Eclipse для меня.

Стоит попробовать. :)

http://code.google.com/p/run-jetty-run/

0

Вы можете использовать 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 файлов. См. Configuring the jetty container для получения дополнительной информации.

Теперь правой кнопкой мыши проект Maven и запустить цели,

mvn jetty:run 

для запуска сервера по умолчанию порт 8080.И остановить сервер,

mvn jetty:stop 

If not specified, Jetty will create a ServerConnector instance listening on port 8080 . You can change this default port number by using the system property jetty.http.port on the command line, for example, mvn -Djetty.http.port=9999 jetty:run . Note that since jetty-9.0 it is no longer possible to configure a https connector directly in the pom.xml: you need to use jetty xml config files to do it.

Читайте о более целей и конфигурации на молы сайте,

Смежные вопросы