在类路径中添加库后找不到 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 类的主要内容,如果未能解决你的问题,请参考以下文章
关于用maven创建的springboot工程打包jar后找不到配置文件的问题