2010-03-10 49 views
14

Estoy intentando configurar Eclipse para ejecutar e implementar mis proyectos en un servidor Jetty 7 (la versión más antigua disponible en http://download.eclipse.org/jetty/). He descargado Jetty 7 y lo he descomprimido, y he instalado el complemento Jetty de la lista de adaptadores de servidor disponibles, pero cuando intento configurar un nuevo servidor Jetty, la lista de tipo de servidor solo contiene "Jetty 6". Si uso esto y lo señala en mi servidor de tiempo de ejecución, cuando trato de iniciarlo me sale el siguiente error:Ejecutando el servidor Jetty 7 en eclipse?

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"

supongo que necesito un adaptador diferente para comenzar embarcadero 7, pero no tengo ni idea dónde encontrarlo

Respuesta

2

El problema es que el nombre del paquete cambió con la migración a Eclipse, y los amigos de Jetty siguen ocupados.

Su opción más fácil es descargar Jetty 6 de Codehaus (http://dist.codehaus.org/jetty/), descomprimirlo en algún lugar y usar el adaptador Jetty 6.

+4

de tipo de irónico que el paso a ser un eclipse oficial proyecto ha hecho * más difícil * usar Jetty con eclipse, pero parece ser el caso. Bueno, de vuelta a v6, supongo. :( – user264636

+1

El nuevo adaptador Jetty funciona muy bien con Jetty 7.2 –

+0

ørn: ¿Qué versión es el nuevo adaptador, y de dónde lo sacaste? Tengo org.mortbay.jetty.serveradaptor_1.0.4 (que se instaló utilizando "Descargar servidor adicional" adaptadores, y que también está disponible en http://www.webtide.com/eclipse/) Con ese adaptador, Eclipse solo me ofrece el tipo de ejecución "Jetty 6", y si trato de usarlo con Jetty 7, obtengo la misma excepción que en la pregunta anterior. –

22

Mejor que usar los adaptadores WTP prefiero usar un embarcadero incrustado. Acabo de crear un proyecto java normal, llamémoslo "embarcación embebida". Hago un proyecto de webapp original para este proyecto en la sección Proyectos de la ruta de compilación de Java de las propiedades del proyecto. Que se crea una clase que se inicia una instancia de amarre así:

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

En el proyecto-embarcadero incrustado creo un "lib" carpeta y copiar todas las librerías de la carpeta embarcadero/lib, a continuación, añado las librerías en las bibliotecas de las propiedades del proyecto.

la ejecución y depuración del muelle incorporado funciona muy bien para mí, la JSP y la clase de recarga funciona como un encanto

+0

Idea interesante. Solía ​​hacer algo similar a esto, pero terminó con mis aplicaciones web que dependen del embarcadero, que es algo que quiero evitar. Sin embargo, su enfoque no parece tener este problema. Gracias. – user264636

+0

También podría tener esta aplicación en la carpeta de prueba, para que esté disponible para todos, pero no está entrando en el archivo jar real – kubek2k

22

Hay una nueva (oficial!) Embarcadero WTP Plugin apoyo 7.x embarcadero y 8.x: http://wiki.eclipse.org/Jetty_WTP_Plugin

+0

Acabo de hacer clic en su enlace, y tiene esta actualización: "El soporte para esta característica se ha eliminado con Jetty 9. Si usted siente que esto debería ser devuelto por favor presente un error. " – skomisa

+0

Parece que la nueva forma" oficial "es implementar en un servidor Jetty independiente y usar la depuración remota: http://www.eclipse.org/jetty/documentation/current /debugging-with-eclipse.html –

0

Puede utilizar el embarcadero Maven Plugin para configurar el servidor embarcadero en el eclipse de forma muy sencilla. Incluir los siguientes elementos en que 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> 

y plugins en gestiones de su 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> 

O puede separar la configuración del servidor en jetty-.xml archivos separados. Ver Configuring the jetty container para más.

Ahora clic derecho sobre el proyecto de Maven y ejecute el objetivo,

mvn jetty:run 

para iniciar el servidor en el puerto por defecto 8080.Y para detener el servidor,

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.

Lea más goles y configuración en el sitio embarcadero,

Cuestiones relacionadas