即时通讯尝试通过嵌入jetty开发Web服务器。所以,码头7.3一切正常。昨天我更新了码头库到最新版本8.0.3,现在我通过创建一个ServletContextHandler来获得一个Exception。将jetty 7更新为jetty 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)
所以我要做的就是:
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();
}
}
所以抛出异常的行是:
ServletContextHandler servletContext = new ServletContextHandler(ServletContextHandler.SESSIONS);
即时通讯使用Ubuntu 11.04有:
OpenJDK的Java版本“ 1.6.0_22“ OpenJDK运行环境(IcedTea6 1.10.2)(6b22-1.10.2-0ubuntu1〜11.04.1) OpenJDK 64位服务器VM(内置20.0-b11,混合模式)
有没有人有建议?
感谢您的answere,但即时通讯仍然不知道其中的Servlet 3.0 API可供下载? Java SE JDK 1.6 update 22(openjdk)不提供Servlet 3.0吗?我很困惑... – sockeqwe
你已经下载了它。 Jetty 8是一个Servlet 3.0 API实现。您只需要掌握Java EE API是** abstract **(即它们只在规范和javadoc中存在于纸张中)以及具体的Java EE/Servlet容器,如Jetty,Tomcat,Glassfish,JBoss AS等等。 ..是**具体**实现(即它们包含代码和库)。 – BalusC
好的,这是我在推理中的错误。我已经包括了所有的码头库,但例外仍然存在 – sockeqwe