Aktualisierung Steg 7 Steg 8 : java.lang.NoClassDefFoundError: javax/servlet/FilterRegistration
im, der versucht zu entwickeln, einen Webserver durch die Einbettung Steg. Also mit Steg 7.3 alles geklappt hat. Gestern habe ich aktualisiert, der jetty-libaries, die neueste version 8.0.3 und jetzt bekomme ich eine Exception durch die Schaffung einer ServletContextHandler.
Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/FilterRegistration
bei org.eclipse.jetty.- servlet.ServletContextHandler.(ServletContextHandler.java:126)
bei org.eclipse.jetty.- servlet.ServletContextHandler.(ServletContextHandler.java:106)
bei org.eclipse.jetty.- servlet.ServletContextHandler.(ServletContextHandler.java:94)
bei org.gemsjax.server.GemsJaxServer.main(GemsJaxServer.java:38)
Also, was ich Tue:
public static void main(String[] args) {
Server server = new Server(8080);
ServletContextHandler servletContext = new ServletContextHandler(ServletContextHandler.SESSIONS);
servletContext.setContextPath("/servlets");
servletContext.addServlet(new ServletHolder( new CollaborationWebSocketServlet()),"/collaboration");
//The ResourceHandler to handle static web content
ResourceHandler resourceHandler = new ResourceHandler();
resourceHandler.setDirectoriesListed(true);
resourceHandler.setWelcomeFiles(new String[]{ "index.html" });
resourceHandler.setResourceBase("./war/");
ContextHandler resourceContext = new ContextHandler();
resourceContext.setContextPath("/static");
resourceContext.setHandler(resourceHandler);
HandlerCollection handlers = new HandlerCollection();
handlers.addHandler(resourceContext);
handlers.addHandler(servletContext);
server.setHandler(handlers);
try {
server.start();
server.join();
} catch (Exception e) {
e.printStackTrace();
}
}
So, dass die Linie, die Ausnahme ist:
ServletContextHandler servletContext = new ServletContextHandler(ServletContextHandler.SESSIONS);
Im mit ubuntu 11.04 mit:
openjdk-java-version "1.6.0_22"
OpenJDK Runtime Environment (IcedTea6 1.10.2) (6b22-1.10.2-0ubuntu1~11.04.1)
OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)
Hat jemand einen Vorschlag?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die
javax.- servlet.FilterRegistration
Klasse eingeführt wurde, in der Servlet 3.0. Diese Ausnahme deutet darauf hin, dass Sie noch Bibliotheken von einer älteren Servlet-API-version in Ihre runtime-classpath-was hat Vorrang in der zum laden von Klassen. Zum Beispiel ein zufällig aus dem Internet abgeholtservlet-api.jar
Datei in/WEB-INF/lib
- Ordner der webapp oder vielleicht in der JRE ist/lib
Ordner. Sollten Sie entfernen diese servletcontainer-spezifische Bibliotheken, die sitzen irgendwo in den classpath als in der Ziel-Laufzeitumgebung an sich.Wenn Sie dies nicht zu umgehen Kompilierung Probleme gibt, dann sollten Sie stattdessen genommen haben, die Ziel-runtime-Bibliotheken in den classpath. Zum Beispiel In Eclipse, können Sie es in der Ziel-Laufzeitumgebung an Abschnitt für die Projekt-Eigenschaften. Siehe auch Wie kann ich importieren Sie die javax.servlet-API in mein Eclipse-Projekt?
servlet-api.jar
,javaee.jar
und so weiter. Oder vielleicht haben Sie noch Steg 7 libs in den classpath?Wenn Sie verwenden SBT, FilterRegistration Klasse vorhanden ist, die in 3.0 und auch wenn Sie JETTY Oder Java 8 diese JAR 2.5 es fügt automatisch als Abhängigkeit,
Update:
Servlet-api-2.5-JAR -, war das Chaos da, ich dieses Problem behoben durch hinzufügen von servlet-api-3.0-jar-in-Abhängigkeiten,