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
Merci @msrd0, en effet, il s'exécute avec succès à l'aide de
Êtes-vous sûr que les bibliothèques que vous utilisez inclure la classe
Après avoir exécuté la commande, il semble que le
Avez-vous d'inclure à la variable classpath lors de l'exécution?
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
aideraitAprè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
Vous devez vous connecter pour publier un commentaire.
Il semble que vous êtes absent un POT-de fichier qui comprend la classe
org.apache.jasper.servlet.JspServlet
. Télécharger un fichier JAR contenant (voyez la ici) et l'ajouter à votre classpath. Aussi, sur une note de côté, vous devez remplacercom/test/ServerMain
avec le vrai nom de la classe,com.test.ServerMain
. Vous java déclaration devrait ressembler à ceci:il n'a pas d'importance aussi longtemps que vous entrez le chemin d'accès correct au classpath de la commande java
OriginalL'auteur msrd0
D'ailleurs, il y a un projet github, maintenu par la Jetée du Projet, démontrant la prise en charge de JSP dans Jetty Embarqué.
https://github.com/jetty-project/embedded-jetty-jsp
heh, JSP est tout sauf léger. Surtout si vous utilisez la Glassfish/Jasper artefacts, un peu moins lorsque vous utilisez Apache/Jasper artefacts.
aussi, l'utilisation de
jetty-all.jar
est l'antithèse de léger, littéralement contient tout et l'évier de la cuisine que de la Jetée a disponibles, dont la plupart des projets utilisent moins de 30%. En fait, la façon dont le code est structuré, il serait impossible d'utiliser 100% de ce pot dans un projet unique (comme certaines fonctionnalités sont optionnelles et une fois utilisé exclusivement interdire d'autres caractéristiques d'être utilisé)le
jetty-all.jar
n'existe que comme une aide à l'apprentissage (référencés dans la documentation), son pas fait pour une utilisation en production.OriginalL'auteur Joakim Erdfelt
N'ai pas essayé pour l'embarqué Jetée mais lors de l'exécution de la Jetée 9.3 en tant que service, vous devrez ajouter la prise en charge de JSP.
Où
JETTY_BASE
est votre dossier dans lequel vous déployez l'application qui est distinct deJETTY_HOME
. Donc je suppose que Jetty embarqué aurait besoin de configuration similaire.JSP fonctionne, tout simplement. Si vous déposez un fichier JSP à l'intérieur d'un dossier webapps racine, vous pouvez l'exécuter directement. Cependant, certains cadres (comme le Printemps) peut nécessiter une configuration supplémentaire pour arriver à une certaine page.
Nux, vous m'avez sauvé beaucoup de temps ce soir. Je vous remercie. Je n'aurais pas soupçonné quelque chose comme JSP serait un module. (Nouvelles de la Jetée)
OriginalL'auteur Nux