Mam następujący kod do korzystania z osadzonego serwera Jetty obok prostego serwletu i strony internetowej .jsp. Jednak po kompilacji i uruchamiania kodu:Wbudowany serwer Jetty - brak obsługi JSP dla /, nie znaleziono org.apache.jasper.servlet.JspServlet
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
pojawia się błąd:
INFO:oejw.StandardDescriptorProcessor:main: NO JSP Support for /, did not find org.apache.jasper.servlet.JspServlet
A przechodząc do /index.jsp daje błąd 500.
HTTP ERROR 500
Problem accessing /index.jsp.
Reason:
JSP support not configured
Czytałem ten post ale nie sądzę rozwiązanie stosuje się tutaj, bo biegnę Jetty osadzone raczej niż przy użyciu start.jar.
Jak mogę rozwiązać ten błąd, aby serwer działał poprawnie i wyświetlał strony .jsp?
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>
To mój stru projekt braz:
webapp
----com
----test
----MyServlet.java
----ServerMain.java
----index.jsp
----web.xml
----lib
----jetty-all.jar
----servlet-api.jar
Musisz wywołać java z nazwą klasy, więc 'com.test.ServerMain' zamiast' com/test/ServerMain' (dla javac jest poprawny) – msrd0
Dzięki @ msrd0, to faktycznie działa poprawnie, używając 'java com. test.ServerMain' i 'java com/test/ServerMain' ale dzięki za wskazówkę. –
Czy jesteś pewien, że używane biblioteki zawierają klasę "org.apache.jasper.servlet.JspServlet"? 'jar tf lib/servlet-api.jar' pomoże – msrd0