質問編集履歴

1 エラー内容を詳しく記載いたしました。

hirdd

hirdd score 48

2016/11/20 11:26  投稿

JSR 356: Java API for WebSocket を使用したWebSocketサーバについて
Javaで簡単なWebSocketサーバを作成しようとしています。
以下のようにソースを書きましたが、EchoMain.javaのServer server = new Server("localhost", 8080, "/ws", EchoServerEndPoint.class);で
The constructor Server(String, int, String,Class<EchoServerEndPoint>というエラーが出ています。
しかし、いかのリンクを見る限り、コンストラクタの引数は合っているようにも見えます。
tyrusを使用してJavaで簡単なWebSocketサーバを作成しようとしています。
以下のようにソースを書きましたが、Eclipse上で実行してみたところ、"エラー内容"にあるclassNotFoundExceptionエラーが出ています。
https://tyrus.java.net/apidocs/1.0/index.html?org/glassfish/tyrus/server/Server.html
対応方法をご教授いただけますでしょうか??
何が原因かご教授いただけますでしょうか??
■エラー内容
Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException: org.glassfish.tyrus.container.grizzly.server.GrizzlyServerContainer
   at org.glassfish.tyrus.spi.ServerContainerFactory.createServerContainer(ServerContainerFactory.java:85)
   at org.glassfish.tyrus.server.Server.start(Server.java:222)
   at EchoMain.main(EchoMain.java:17)
Caused by: java.lang.ClassNotFoundException: org.glassfish.tyrus.container.grizzly.server.GrizzlyServerContainer
   at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
   at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
   at org.glassfish.tyrus.spi.ServerContainerFactory.createServerContainer(ServerContainerFactory.java:80)
   ... 2 more
■tyrusの取得元
https://tyrus.java.net/dependencies.html
上記リンクのWebSocket RI archiveリンクからダウンロードし、api, ext,lib配下のjarを全てビルドパスに通しました。
■参考リンク
http://backpaper0.github.io/2013/07/14/websocket.html
```EchoServerEndPoint.java
 
 
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
@ServerEndpoint("/echo")
public class EchoServerEndPoint {
   @OnOpen
   public void onOpen(Session session) {
   System.out.println("[open] " + session);
   }
   @OnOpen
   public void onOpen(Session session) {
       System.out.println("[open] " + session);
   }
   @OnMessage
   public String onMessage(String message, Session session) {
       System.out.println("[" + message + "] " + session);
       return message;
   }
   @OnMessage
   public String onMessage(String message, Session session) {
       System.out.println("[" + message + "] " + session);
       return message;
   }
   @OnClose
   public void onClose(Session session) {
       System.out.println("[close] " + session);
   }
   @OnClose
   public void onClose(Session session) {
       System.out.println("[close] " + session);
   }
}
```
```EchoMain.java
import java.io.IOException;
import java.util.Collections;  
import java.util.Map;  
 
import javax.websocket.DeploymentException;
 
import org.glassfish.tyrus.server.Server;
public class EchoMain {
   public static void main(String[] args) throws Exception {
       Server server = new Server("localhost", 8080, "/ws", EchoServerEndPoint.class);
   public static void main(String[] args) throws DeploymentException,
           IOException {
       Map<String, Object> properties = Collections.emptyMap();
       Server server = new Server("localhost", 8080, "/ws", properties,
               EchoServerEndPoint.class);
       try {
           server.start();
           System.in.read();
       } finally {
           server.stop();
       }
   }
}
```
  • Java

    18590 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • WebSocket

    240 questions

    WebSocketとは双方向・全二重コミュニケーションのためのAPIでありプロトコルのことを指します。WebSocketはHTML5に密接に結びついており、多くのウェブブラウザの最新版に導入されています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る