在将库添加到类路径后找不到Jetty WebSocket类

3
我正在尝试使用Jetty通过WebSockets与远程服务器通信。我在Eclipse中开发,但无法编译任何示例代码。以下是我的操作步骤:
1. 下载了最新版本的Jetty,并将start.jar添加到类路径中。 2. 在示例类中包含了以下内容。
import org.eclipse.jetty.websocket.api.Session;
import org.eclipse.jetty.websocket.api.StatusCode;
import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose;

还有一些其他的内容。问题是Eclipse无法解析这些导入。我该怎么办?


从问题中不清楚你是想编写一个Jetty WebSocket服务器还是Jetty WebSocket客户端。无论哪种方式,你都需要除了start.jar之外的其他jar包。 - Joakim Erdfelt
2个回答

9

从你的项目中移除start.jar,它只是用于启动独立Jetty分发的引导jar包。

你需要的JAR包在${jetty.dist}/lib/websockets/目录下。

[joakim@lapetus jetty-distribution-9.0.4.v20130625]$ ls -1 lib/websocket/
websocket-api-9.0.4.v20130625.jar
websocket-client-9.0.4.v20130625.jar
websocket-common-9.0.4.v20130625.jar
websocket-server-9.0.4.v20130625.jar
websocket-servlet-9.0.4.v20130625.jar

所有 WebSocket 应用程序

在您的项目中始终包含以下内容:

  • lib/websocket/websocket-api-9.0.4.v20130625.jar

WebSocket 客户端要求

将以下内容添加到您的项目中:

  • lib/websocket/websocket-client-9.0.4.v20130625.jar
  • lib/websocket/websocket-common-9.0.4.v20130625.jar
  • lib/jetty-io-9.0.4.v20130625.jar
  • lib/jetty-util-9.0.4.v20130625.jar

WebSocket Servlet 要求

如果您正在编写一个 WebSocket 服务器,该服务器将钩入您的 WAR/WebApp,则需要:

  • websocket-servlet-9.0.4.v20130625.jar

您永远不需要 websocket-server-9.0.4.v20130625.jar,因为那是 Jetty 服务器使用的内部/实现特定的 JAR,以提供其对 WebSockets 的支持。


一个问题:当我尝试使用Jetty类的线程启动应用程序时,我会收到以下错误消息:“由于其构建路径不完整,因此未构建项目。找不到org.eclipse.jetty.util.component.ContainerLifeCycle的类文件。”还有第二个错误:“无法解析类型org.eclipse.jetty.util.component.ContainerLifeCycle。它是从所需的.class文件间接引用的。”修复构建路径,然后尝试构建此项目:我需要做更多的事情吗? - mark
解决了,只需要最后两个JAR包。但是我收到了运行时错误:“main”线程中的异常:java.lang.UnsupportedClassVersionError: org/eclipse/jetty/websocket/client/WebSocketClient:不支持的major.minor版本51.0,真的不知道是什么东西。 - mark
"major.minor版本号为51.0"表示需要Java 7。 - Joakim Erdfelt

-1
请查看客户端API,其中列出的jar包必须在您的类路径中。

你能再具体一些吗?我不理解,抱歉。 - mark
当前项目已经超过了10,000行:P 无论如何...我已经粘贴了那个例子,但是org.eclipse.jetty.websocket.client.ClientUpgradeRequest; org.eclipse.jetty.websocket.client.WebSocketClient;仍然无法解决...我从这里下载了jetty http://download.eclipse.org/jetty/stable-9/dist/ - mark
你尝试过按照相同的过程添加 websocket-client 的 jar 包吗? - JVXR
是的,刚刚完成了。我已经包含了jetty-all-7.6.2.v20120308.jar和jetty-websocket-7.6.2.v20120308-tests.jar文件。 - mark
1
对于未解决的依赖关系,请尝试在 http://www.jarvana.com/jarvana/ 等网站中搜索并将所有相关的JAR文件添加到您的项目中。如果仍然无法解决问题,则可能是Eclipse类路径问题。请尝试刷新项目配置,还可以通过从shell中使用eclipse -clean命令重新启动Eclipse来解决。 - JVXR
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接