Jetty 8网络插座



我已经下载了最新的Jetty 8 Hightide,但无法让WebSockets工作。我解压缩分发文件,将.war文件放在webapps文件夹中,然后启动:

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

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

我以前在里程碑式的发布中也经历过这种情况。

由于某些原因,默认情况下web套接字似乎不再可用,因此上下文XML文件中需要以下代码:

<Set name="extraClasspath"><SystemProperty name="jetty.home" default="."/>/lib/jetty-websocket-<version>.jar</Set>

我在使用jetty maven插件和版本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>
copy %JETTY_ROOT%libjetty-websocket-<version>.jar %SERVLET_ROOT%WEB-INFlib

看起来对我很有用!

通过WST插件从Eclipse运行Jetty时遇到了类似的问题。以下是我解决它的方法。在工作区的.metadata目录下找到了应用程序的上下文:[workspace's.metadata]/.plugins/org.eclipse.wst.server.core/[configuration id-like'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主页

相关内容

  • 没有找到相关文章

最新更新