Jetty 8网络插座

时间:2011-10-13 17:56:27

标签: jetty websocket

我已经下载了最新的Jetty 8 Hightide,但无法让WebSockets工作。我解压缩发行版,将我的.war文件放在webapps文件夹中并开始:

java.lang.NoClassDefFoundError: org/eclipse/jetty/websocket/WebSocketServlet

我已经验证了JETTY_HOME / lib文件夹包含jetty-websocket.jar,它包含WebSocketServlet类文件。

我之前已经开始使用里程碑版本。

4 个答案:

答案 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主页。