im tratando de desarrollar un servidor web mediante la incorporación de embarcadero. Así que con el muelle 7.3 todo funcionó bien. Ayer actualicé las libarias del embarcadero a la versión más nueva 8.0.3 y ahora recibo una excepción creando un ServletContextHandler.Actualización de muelle 7 al muelle 8: java.lang.NoClassDefFoundError: javax/servlet/FilterRegistration
Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/FilterRegistration at org.eclipse.jetty.servlet.ServletContextHandler.(ServletContextHandler.java:126) at org.eclipse.jetty.servlet.ServletContextHandler.(ServletContextHandler.java:106) at org.eclipse.jetty.servlet.ServletContextHandler.(ServletContextHandler.java:94) at org.gemsjax.server.GemsJaxServer.main(GemsJaxServer.java:38)
Así que lo que hago es:
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();
}
}
Así que la línea que lanza la excepción es:
ServletContextHandler servletContext = new ServletContextHandler(ServletContextHandler.SESSIONS);
Im usando Ubuntu 11.04 con:
versión de Java OpenJDK " 1.6.0_22 " OpenJDK Runtime Environment (IcedTea6 1.10.2) (6b22-1.10.2-0ubuntu1 ~ 11.04.1) OpenJDK 64 bits del servidor VM (build 20.0-b11, modo mixto)
¿Alguien tiene una sugerencia?
gracias por su answere, pero todavía estoy preguntando donde el API servlet 3.0 está disponible para descarga? ¿La actualización Java SE JDK 1.6 22 (openjdk) no proporciona Servlet 3.0? Estoy confundido ... – sockeqwe
Ya lo has descargado. Jetty 8 es una implementación de Servlet 3.0 API. Solo necesita entender que las API de Java EE son ** abstractas ** (es decir, existen en papel solo como especificaciones y javadocs) y que los contenedores concretos de Java EE/Servlet como Jetty, Tomcat, Glassfish, JBoss AS, etc. .. son las implementaciones ** concretas ** (es decir, contienen el código y las bibliotecas). – BalusC
Bien, fue mi error de razonamiento. He incluido todas las librerias embarcadero, pero la excepción sigue ahí – sockeqwe