2010-11-20 7 views
20

je peux visiter .html pages avec la jetée, mais quand je visite une page .jsp j'obtenir:support Configuration de la jetée JSP en mode intégré dans le projet Maven

0 13:21:13/[INFO] Non Support JSP. Vérifiez que les pots JSP sont dans lib/jsp et que l'option JSP a été spécifiée à start.jar

J'ai ajouté les dépendances suivantes:

<dependency> 
    <groupId>org.eclipse.jetty</groupId> 
    <artifactId>jetty-webapp</artifactId> 
    <version>8.0.0.M1</version> 
</dependency> 
<dependency> 
    <groupId>javax.servlet.jsp</groupId> 
    <artifactId>jsp-api</artifactId> 
    <version>2.1</version> 
</dependency> 

Est-ce que remplir le « chèque que les fichiers JSP sont dans la partie lib/jsp "du message d'erreur?

Aussi, je n'ai aucune idée de ce que "vérifier que l'option JSP a été spécifiée pour start.jar" signifie dans ce contexte. Je donne les résultats suivants:

public static void main(String[] args) throws Exception { 
    Server server = new Server(); 

    SelectChannelConnector connector = new SelectChannelConnector(); 
    connector.setPort(8080); 
    server.addConnector(connector); 

    WebAppContext webApp = new WebAppContext(); 
    webApp.setContextPath("/"); 
    webApp.setWar("src/main/webapp"); 
    server.setHandler(webApp); 
    server.start(); 
    server.join(); 
    } 

Répondre

17

Je l'ai à travailler en ajoutant la dépendance Mortbay JSP (ce qui est en notation Gradle, mais vous voyez l'idée):

compile 'org.eclipse.jetty:jetty-io:8.0.0.M3' 
compile 'org.eclipse.jetty:jetty-server:8.0.0.M3' 
compile 'org.eclipse.jetty:jetty-servlet:8.0.0.M3' 
compile 'org.eclipse.jetty:jetty-util:8.0.0.M3' 
compile 'org.eclipse.jetty:jetty-webapp:8.0.0.M3' 
compile 'org.mortbay.jetty:jsp-2.1-glassfish:2.1.v20100127' 

Il y a un larger writeup available on my blog.

+1

Jetty 8 prend en charge le jsp 2.2. Dans la distribution jetty hightide 8.0.0, ils incluent les éléments suivants dans le répertoire jsp: 'com.sun.el_2.2.0.v201105051105.jar' ' javax.el_2.2.0.v201105051105.jar' 'javax.servlet. jsp.jstl_1.2.0.v201004190952.jar' 'javax.servlet.jsp_2.2.0.v201103241009.jar'' org.apache.jasper.glassfish_2.2.2.v201108011116.jar' 'org.apache.taglibs.standard.glassfish_1.2.0 .v201004190952.jar' Je suppose que cela vous donnera le support de jsp 2.2. L'inconvénient est-ce beaucoup de pots à garder trace. Je me demande quand jetty aura un jetty-jsp.jar? Ce serait bien! –

+1

En fait, la distribution de jetée a aussi ces dépendances. Ils peuvent être trouvés à l'adresse suivante: [http://download.eclipse.org/jetty/orbit] Le pom de la distribution jetty télécharge les fichiers jars à cet URL et les place dans le répertoire lib de la distribution. –

+1

Wow, j'ai essayé toutes les solutions ci-dessous qui ont causé beaucoup de classes manquantes: ExpressionFactory et plus. C'était le seul qui fonctionnait simplement –

10

Je sais que cela a été répondu il y a un moment. Je n'ai pas pu obtenir la réponse de Ben McCann pour travailler pour moi. Cependant, j'ai eu la chance en ajoutant le support JSP directement à la jetée en ajoutant Étrangement

<!--jsp support for jetty, add the 2 following --> 
    <dependency> 
     <groupId>org.mortbay.jetty</groupId> 
     <artifactId>jsp-2.1</artifactId> 
     <version>6.1.14</version> 
     <type>jar</type> 
    </dependency> 
    <dependency> 
     <groupId>org.mortbay.jetty</groupId> 
     <artifactId>jsp-api-2.1</artifactId> 
     <version>6.1.14</version> 
     <type>jar</type> 
    </dependency> 

, cela n'a pas été pris en charge par la version 6.1.24 j'avais à l'origine.

Donc, au total, qui a fait mon pom.xml ressembler à ceci:

http://maven.apache.org/xsd/maven-4.0.0.xsd "> 4.0.0

<groupId>wikiproject</groupId> 
<artifactId>wikiproject</artifactId> 
<version>1.0-SNAPSHOT</version> 

<properties> 
    <jetty.version>6.1.14</jetty.version> 
</properties> 


<!-- Jetty dependencies --> 
<dependencies> 
    <dependency> 
     <groupId>org.mortbay.jetty</groupId> 
     <artifactId>jetty</artifactId> 
     <version>${jetty.version}</version> 
     <type>jar</type> 
    </dependency> 

    <dependency> 
     <groupId>org.mortbay.jetty</groupId> 
     <artifactId>jetty-util</artifactId> 
     <version>${jetty.version}</version> 
     <type>jar</type> 
    </dependency> 

    <dependency> 
     <groupId>org.mortbay.jetty</groupId> 
     <artifactId>jetty-plus</artifactId> 
     <version>${jetty.version}</version> 
     <type>jar</type> 
    </dependency> 

    <!--jsp support for jetty, add the 2 following --> 
    <dependency> 
     <groupId>org.mortbay.jetty</groupId> 
     <artifactId>jsp-2.1</artifactId> 
     <version>${jetty.version}</version> 
     <type>jar</type> 
    </dependency> 
    <dependency> 
     <groupId>org.mortbay.jetty</groupId> 
     <artifactId>jsp-api-2.1</artifactId> 
     <version>${jetty.version}</version> 
     <type>jar</type> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.ant</groupId> 
     <artifactId>ant-antlr</artifactId> 
     <version>1.7.1</version> 
    </dependency> 

</dependencies> 

et ma classe de départ (que j'ajouté dans le dossier \src\test\java\com\company\wikiproject)

package com.company.wikiproject; 
import org.mortbay.jetty.Connector; 
import org.mortbay.jetty.Server; 
import org.mortbay.jetty.bio.SocketConnector; 
import org.mortbay.jetty.webapp.WebAppContext; 
/** 
* User: Jesper Rønn-Jensen 
* start wiki pages 
*/ 

public class start {

public static void main(String[] args) { 
    Server jettyServer = null; 
    try { 
     jettyServer = new Server(); 

     SocketConnector conn = new SocketConnector(); 
     conn.setPort(8080); 
     jettyServer.setConnectors(new Connector[]{conn}); 

     WebAppContext context = new WebAppContext(); 
     context.setContextPath("/"); 
     context.setWar("src/main/webapp"); 

     jettyServer.setHandler(context); 
     jettyServer.start(); 
    } catch (Exception ignore) { 
     if (jettyServer != null) { 
      try { 
       jettyServer.stop(); 
      } catch (Exception e1) { 
       e1.printStackTrace(); 
      } 
     } 
    } 
} 

}

+0

Ceci ne fonctionne que pour Jetty 6 et plus. C'est assez vieux depuis Jetty 8 est presque sorti maintenant. J'ai mis à jour ma réponse pour fournir une meilleure solution, alors jetez un autre coup d'oeil. –

+0

Ceci est toujours une réponse précieuse, car par ex. Solr est livré avec la jetée 6. Vous pouvez simplement ajouter 'org.mortbay.jetty: jsp-2.1: 6.1.14' à votre POM et le combiner avec n'importe quelle version de jetée 6. Le Maven central n'a pas la version 6.1.26 de jsp-2.1. – Maddin

10

Je l'ai fait sans utiliser les pots de la distribution de la jetée, en utilisant uniquement les dépendances Maven:

<properties> 
    <jetty.version>8.1.0.RC0</jetty.version> 
    <glassfish.javax.version>2.2.3</glassfish.javax.version> 
    <glassfish.javax-impl.version>2.2</glassfish.javax-impl.version> 
    <glassfish.jstl.version>1.2</glassfish.jstl.version> 
</properties> 

<dependencies> 
    <!-- Jetty Webapp--> 
    <dependency> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>jetty-webapp</artifactId> 
     <version>${jetty.version}</version> 
    </dependency> 

    <!-- JSP Support --> 
    <dependency> 
     <groupId>org.glassfish.web</groupId> 
     <artifactId>javax.servlet.jsp</artifactId> 
     <version>${glassfish.javax.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.glassfish.web</groupId> 
     <artifactId>jsp-impl</artifactId> 
     <version>${glassfish.javax-impl.version}</version> 
    </dependency> 

    <!-- EL Support --> 
    <dependency> 
     <groupId>org.glassfish.web</groupId> 
     <artifactId>javax.el</artifactId> 
     <version>${glassfish.javax.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.glassfish.web</groupId> 
     <artifactId>el-impl</artifactId> 
     <version>${glassfish.javax-impl.version}</version> 
    </dependency> 

    <!-- JSTL Support --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>${glassfish.jstl.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.glassfish.web</groupId> 
     <artifactId>jstl-impl</artifactId> 
     <version>${glassfish.jstl.version}</version> 
    </dependency> 
</dependencies> 
6

Sur la base de l'excellente réponse de Simon Huet, voici ma prise:

<properties> 
    <bundle.name>nsb-${project.version}</bundle.name> 
    <glassfish.javax.version>2.2.3</glassfish.javax.version> 
    <glassfish.javax-jstl.version>1.2.1</glassfish.javax-jstl.version> 
</properties> 

<dependencies> 

    <!-- Jetty Webapp --> 
    <dependency> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>jetty-webapp</artifactId> 
     <version>${jetty.version}</version> 
    </dependency> 

    <!-- JSP Support --> 
    <dependency> 
     <groupId>org.glassfish.web</groupId> 
     <artifactId>javax.servlet.jsp</artifactId> 
     <version>${glassfish.javax.version}</version> 
    </dependency> 

    <!-- EL Support --> 
    <dependency> 
     <groupId>org.glassfish.web</groupId> 
     <artifactId>javax.el</artifactId> 
     <version>${glassfish.javax.version}</version> 
    </dependency> 

    <!-- JSTL Support --> 
    <dependency> 
     <groupId>org.glassfish.web</groupId> 
     <artifactId>javax.servlet.jsp.jstl</artifactId> 
     <version>${glassfish.javax-jstl.version}</version> 
     <exclusions> 
      <exclusion> 
       <artifactId>jstl-api</artifactId> 
       <groupId>javax.servlet.jsp.jstl</groupId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

</dependencies> 
1

Après avoir lu cette page stackoverflow (nice d'emploi), ainsi que http://wiki.eclipse.org/Jetty/Howto/Configure_JSP, j'ai finalement obtenu cela fonctionne aussi bien. Puisque ma config est légèrement différente, j'ai pensé que je pourrais contribuer en retour.J'ai une installation jetée 8 embarqué sans le compilateur javac ', et je l'ai eu à travailler en utilisant le compilateur Eclipse et définir la propriété du système avant de créer le serveur, comme ceci:

System.setProperty("org.apache.jasper.compiler.disablejsr199", "true"); 
Server server = new Server(); 

Et en utilisant le maven suivant configuration:

<dependency> 
    <groupId>org.apache.geronimo.specs</groupId> 
    <artifactId>geronimo-servlet_3.0_spec</artifactId> 
    <version>1.0</version> 
</dependency> 
<dependency> 
    <groupId>org.eclipse.jetty.orbit</groupId> 
    <artifactId>javax.el</artifactId> 
    <version>2.2.0.v201108011116</version> 
</dependency> 
<dependency> 
    <groupId>org.eclipse.jetty.orbit</groupId> 
    <artifactId>javax.servlet.jsp</artifactId> 
    <version>2.2.0.v201112011158</version> 
</dependency> 
<dependency> 
    <groupId>org.eclipse.jetty.orbit</groupId> 
    <artifactId>javax.servlet.jsp.jstl</artifactId> 
    <version>1.2.0.v201105211821</version> 
</dependency> 
<dependency> 
    <groupId>org.eclipse.jetty.orbit</groupId> 
    <artifactId>org.apache.jasper.glassfish</artifactId> 
    <version>2.2.2.v201112011158</version> 
</dependency> 
<dependency> 
    <groupId>org.eclipse.jetty.orbit</groupId> 
    <artifactId>org.apache.taglibs.standard.glassfish</artifactId> 
    <version>1.2.0.v201112081803</version> 
</dependency> 
<dependency> 
    <groupId>org.eclipse.jetty.orbit</groupId> 
    <artifactId>org.eclipse.jdt.core</artifactId> 
    <version>3.7.1</version> 
</dependency> 
Questions connexes