Jetty无法以ClassNotFoundException开头:org.eclipse.jetty.client.HttpClient

时间:2016-12-22 08:00:17

标签: websocket jetty

我试图创建一个包含单个WebSocket servlet的war文件。出于某种原因,jetty想要HttpClient,即使我只想拥有服务器端逻辑。 HttpClient存在于" jetty-client-9.4.0.v20161208.jar" Jetty下的文件。但是那个状态转储中没有列出(jetty.server.dumpAfterStart = true)。

的web.xml

./terraform_apply.sh

插口:

<web-app>
  <display-name>WebSocketApp</display-name>
  <servlet>
    <servlet-name>wsservlet</servlet-name>
    <servlet-class>com.example.test.MyJettyServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>wsservlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

Gradle构建文件:

@ServerEndpoint("/control")
public class ControlSocket {
    @OnOpen
    public void onOpen(Session session) {
        System.out.println("WebSocket opened: " + session.getId());
    }
    @OnMessage
    public void onMessage(String txt, Session session) throws IOException {
        System.out.println("Message received: " + txt);
        session.getBasicRemote().sendText(txt.toUpperCase());
    }

    @OnClose
    public void onClose(CloseReason reason, Session session) {
        System.out.println("Closing a WebSocket due to " + reason.getReasonPhrase());

    }
}

我假设依赖关系有问题。但到底是什么?我应该包括websocket实现罐吗?如果是,那么为什么?

1 个答案:

答案 0 :(得分:3)

如果您使用jetty-distribution,请添加client模块。

$ cd /path/to/mybase
$ java -jar /path/to/jetty-dist/start.jar --add-to-start=client

Jetty 9.4.1 btw正在改进。