Intégré Serveur Jetty - PAS de prise en charge de JSP pour /, n'a pas trouvé de org.apache.jasper.servlet.JspServlet

J'ai le code suivant pour utiliser un serveur Jetty embarqué aux côtés d'un servlet simple et .jsp page web. Cependant, après la compilation et l'exécution du code:

javac -cp lib/servlet-api.jar:lib/jetty-all.jar com/test/MyServlet.java 
javac -cp lib/servlet-api.jar:lib/jetty-all.jar com/test/ServerMain.java 
java -cp .:lib/servlet-api.jar:lib/jetty-all.jar com/test/ServerMain

J'obtiens une erreur:

INFO:oejw.StandardDescriptorProcessor:main: NO JSP Support for /, did not find org.apache.jasper.servlet.JspServlet

Et pour naviguer vers /index.jsp donne une erreur 500.

HTTP ERROR 500
Problem accessing /index.jsp. 
Reason:
JSP support not configured

J'ai lu ce post mais je ne pense pas que la solution s'applique ici parce que je suis en cours d'exécution Jetty embarqué plutôt que d'utiliser les start.jar.

Comment puis-je résoudre ce problème afin que le serveur va fonctionner et de servir .pages jsp avec succès?

ServerMain.java

package com.test;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.WebAppContext;

public class ServerMain {

    public static void main(String[] args) throws InterruptedException {

        Server server = new Server(8080);
        WebAppContext webApp = new WebAppContext();
        webApp.setDescriptor("web.xml");
        webApp.setResourceBase("");
        webApp.setParentLoaderPriority(true);
        server.setHandler(webApp);

        try {
            server.start();
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(-1);
        }
        server.join();
    }
}

MyServlet.java

package com.test;

import java.io.IOException;
import java.util.Properties;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyServlet extends HttpServlet {
    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {

        resp.setContentType("text/plain");
        resp.getWriter().println("Hello, this is a testing servlet. \n\n");
        Properties p = System.getProperties();
        p.list(resp.getWriter());

    }
}

web.xml

   <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE web-app PUBLIC "-//Oracle Corporation//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5">
    <servlet>
        <servlet-name>MyServlet</servlet-name>
        <servlet-class>com.test.MyServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyServlet</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

C'est mon projet structure:

webapp
----com
    ----test
        ----MyServlet.java
        ----ServerMain.java
        ----index.jsp
        ----web.xml
----lib
    ----jetty-all.jar
    ----servlet-api.jar  
Vous devez appeler la java avec le nom de la classe, de sorte com.test.ServerMain au lieu de com/test/ServerMain (pour javac son correct)
Merci @msrd0, en effet, il s'exécute avec succès à l'aide de java com.test.ServerMain et java com/test/ServerMain mais merci pour l'astuce.
Êtes-vous sûr que les bibliothèques que vous utilisez inclure la classe org.apache.jasper.servlet.JspServlet? jar tf lib/servlet-api.jar aiderait
Après avoir exécuté la commande, il semble que le JspServlet classe n'est pas trouvé dans le lib/servlet-api.jar ou lib/jetty-all.jar. Cependant, j'ai trouvé un bocal en ligne qui ne contiennent que de la classe, re-compilé avec le nouveau pot dans le chemin de classe, mais toujours l'erreur persiste.
Avez-vous d'inclure à la variable classpath lors de l'exécution?

OriginalL'auteur | 2014-10-06