我已经下载了最新的Jetty 8 Hightide,但无法让WebSockets工作。我解压缩发行版,将我的.war文件放在webapps文件夹中并开始:
java.lang.NoClassDefFoundError: org/eclipse/jetty/websocket/WebSocketServlet
我已经验证了JETTY_HOME / lib文件夹包含jetty-websocket.jar,它包含WebSocketServlet类文件。
我之前已经开始使用里程碑版本。
答案 0 :(得分:3)
出于某种原因,默认情况下Web套接字似乎不再可用,因此上下文XML文件中需要以下代码:
<Set name="extraClasspath"><SystemProperty name="jetty.home" default="."/>/lib/jetty-websocket-<version>.jar</Set>
答案 1 :(得分:3)
我使用jetty-maven-plugin和版本8.0.3.v20111011
进行了相同的操作。然而,解决方案很简单。只需将jetty-websocket
包含为编译范围依赖项(即不声明范围)。
pom.xml
的相关部分:
...
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jetty.version>8.0.3.v20111011</jetty.version>
</properties>
...
<build>
<plugins>
...
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${jetty.version}</version>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-websocket</artifactId>
<version>${jetty.version}</version>
</dependency>
...
</dependencies>
答案 2 :(得分:1)
copy %JETTY_ROOT%\lib\jetty-websocket-<version>.jar %SERVLET_ROOT%\WEB-INF\lib
似乎对我有用!
答案 3 :(得分:1)
有类似的问题从Eclipse通过WST插件运行Jetty。这是我如何解决它。在workspace的.metadata目录下找到应用程序的上下文:
[workspace的.metadata] /。plugins / org.eclipse.wst.server.core / [配置ID如'tmp1'] / contexts / [app name] .xml。
编辑它以在配置标记下包含以下内容:<Set name="extraClasspath">[jetty install dir]/lib/jetty-websocket-8.1.2.v20120308.jar;[jetty install dir]/lib/jetty-util-8.1.2.v20120308.jar</Set>
必须对Jetty安装目录进行硬编码,因为我的Jetty安装在Eclipse之外,并且<SystemProperty name="jetty.home" default="."/>
解析到.metadata下的jetty主页。