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

Posted

技术标签:

【中文标题】在类路径中添加库后找不到 Jetty WebSocket 类【英文标题】:Can't find Jetty WebSocket classes after adding the libraries in classpath 【发布时间】:2013-07-30 20:05:04 【问题描述】:

我正在尝试使用 Jetty 与远程服务器通信,使用 websockets。 我在 Eclipse 中开发它,但我无法编译任何示例代码。 这就是我所做的

我下载了最新版本的 Jetty,并在类路径中添加了 start.jar。 这就是我在示例类中包含的内容

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以外的罐子。 【参考方案1】:

从您的项目中删除 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 要求

如果您正在编写一个将挂钩到您的 WAR/WebApp 的 WebSocket 服务器,那么您将需要:

websocket-servlet-9.0.4.v20130625.jar

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

【讨论】:

一个问题:当我尝试使用码头类的线程启动应用程序时,我收到此错误“项目未构建,因为它的构建路径不完整。找不到 org 的类文件.eclipse.jetty.util.component.ContainerLifeCycle。还有第二个“org.eclipse.jetty.util.component.ContainerLifeCycle 类型无法解析。它是从所需的 .class 文件中间接引用的“修复构建路径,然后尝试构建这个项目”:我应该做更多的事情吗? 已解决,需要最后 2 个罐子。但我在线程“main”java.lang.UnsupportedClassVersionError: org/eclipse/jetty/websocket/client/WebSocketClient 中得到这个运行时错误异常:不支持major.minor 版本51.0,真的不知道它是什么 "major.minor version 51.0" 表示需要 Java 7。【参考方案2】:

请通过客户端API 列出的 jar 必须在您的类路径中。

【讨论】:

你能说得更准确点吗?看不懂对不起 假设您是 Java 新手。您的班级必须有权访问捆绑在教程中列出的 jar 文件中的其他 .class 文件。我提供的链接有一个 websocket 客户端的示例实现。您需要做的就是复制粘贴并运行。您可能需要从 search.maven.org 下载 jar 文件并将其添加到项目库中。 当前项目的长度超过 10k 行:P 无论如何.. 我已经粘贴了那个例子,但是 org.eclipse.jetty.websocket.client.ClientUpgradeRequest; org.eclipse.jetty.websocket.client.WebSocketClient;仍然无法解决...我从那里下载了码头download.eclipse.org/jetty/stable-9/dist 我将它包含在如下菜单 => 项目 => 属性 => java 构建路径 => 添加外部 jar => 添加 start.jar 对于未解决的依赖项,请尝试在jarvana.com/jarvana 之类的站点中搜索,并将所有相关的 jars 添加到您的项目中。如果仍然无法正常工作,则为 eclipse 类路径问题。尝试刷新项目配置并尝试使用 eclipse -clean 从 shell 重新启动 eclipse

以上是关于在类路径中添加库后找不到 Jetty WebSocket 类的主要内容,如果未能解决你的问题,请参考以下文章

在 matlab 中添加路径 libsvm 库后的问题

virtuoso降版本后找不到library

关于用maven创建的springboot工程打包jar后找不到配置文件的问题

关于 X509Certificate2 程序发布IIS后找不到文件路径的问题

Nodejs全局安装模块后找不到命令的解决方法

Linux系统添加网卡后找不到网卡信息