Repast simphony で Java websocket を使用したいのですが、うまくいきません。次のエラーが表示されます。
java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getServletContext()Ljavax/servlet/ServletContext; org.eclipse.jetty.websocket.servlet.UpgradeHttpServletRequest.(UpgradeHttpServletRequest.java:91) で org.eclipse.jetty.websocket.servlet.ServletUpgradeRequest.(ServletUpgradeRequest.java:52) で org.eclipse.jetty.websocket.server.WebSocketServerFactory.acceptWebSocket(WebSocketServerFactory.java:156) で org.eclipse.jetty.websocket.server.WebSocketServerFactory.acceptWebSocket(WebSocketServerFactory.java:148) で org.eclipse.jetty.websocket.server.WebSocketHandler.handle(WebSocketHandler.java:97)で org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) で org.eclipse.jetty.server.Server.handle(Server.java:497)で org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311) で org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:248) で org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540) で org.eclipse.jetty.util.thread.QueuedThreadPool.runJob (QueuedThreadPool.java:610) で org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:539) で java.lang.Thread.run(Thread.java:745) で
誰かがこのエラーを解決する方法を説明してもらえますか? ありがとうございました
インターネットから取得したコードをテストしましたが、repast simphony で実行しなければ機能します
私のサーバー
パッケージ webSocketTest; org.eclipse.jetty.server.Server をインポートします。 org.eclipse.jetty.websocket.server.WebSocketHandler をインポートします。 org.eclipse.jetty.websocket.servlet.WebSocketServletFactory をインポートします。 パブリック クラス WebSocketTest { public static void main(String[] args) throws Exception { サーバー サーバー = 新しいサーバー (8080); WebSocketHandler wsHandler = 新しい WebSocketHandler() { @オーバーライド public void configure(WebSocketServletFactory factory) { factory.register(MyWebSocketHandler.class); } }; server.setHandler(wsHandler); server.start(); server.join(); } }
パッケージ webSocketTest; import java.io.IOException; org.eclipse.jetty.websocket.api.Session をインポートします。 org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose をインポートします。 org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect をインポートします。 org.eclipse.jetty.websocket.api.annotations.OnWebSocketError をインポートします。 org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage をインポートします。 org.eclipse.jetty.websocket.api.annotations.WebSocket をインポートします。 @WebSocket パブリック クラス MyWebSocketHandler { @OnWebSocket閉じる public void onClose(int statusCode, String reason) { System.out.println("Close: statusCode=" + statusCode + ", reason=" + reason); } @OnWebSocketError public void onError(Throwable t) { System.out.println("エラー: " + t.getMessage()); } @OnWebSocketConnect public void onConnect(セッション セッション) { System.out.println("Connect: " + session.getRemoteAddress().getAddress()); 試す { session.getRemote().sendString("Hello Webbrowser"); } キャッチ (IOException e) { e.printStackTrace(); } } @OnWebSocketMessage public void onMessage(文字列メッセージ) { System.out.println("メッセージ: " + メッセージ); } }