スタック オーバーフロー ギークの皆様
Java EE 7 を使用して非常に基本的な Java クライアント/サーバー アプリを作成しようとしていますが、JSR 356 実装を使用して websocket 経由でメッセージを送信することを目的としています。
そこで見つけたさまざまなブログに従って、サーバーのプログラミングとデプロイに成功し、Javascript クライアントと Java サーバーと通信することができました。
今私がやろうとしているのは、サーバーと通信して同じ情報を取得する必要があるスタンドアロンの Java アプリを作成することです。JSR 356 実装は Java クライアントで使用できると読みましたが、まさにそれを実行しました。また、Tyrus を使用してクライアントを作成し、ラッチ メカニズムなどを使用してクライアントを実行し続けました。クライアントは最終的にプログラムされ、サーバーは稼働していますが、クライアントを実行しようとすると、次のエラーが発生します。
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.glassfish.appclient.client.acc.AppClientContainer.launch(AppClientContainer.java:446)
at org.glassfish.appclient.client.AppClientFacade.main(AppClientFacade.java:166)
Caused by: java.lang.NoClassDefFoundError: javax/websocket/CloseReason$CloseCode
at Main.Main.main(Main.java:27)
... 6 more
Caused by: java.lang.ClassNotFoundException: javax.websocket.CloseReason$CloseCode
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at org.glassfish.appclient.client.acc.ACCClassLoader.findClass(ACCClassLoader.java:237)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 7 more
Java Result: 1
私は NetBeans 7.3 で Java EE 7 API + Tyrus を使用しており、Glassfish 4 にデプロイしています (これは、私が読んだことから、JSR 356 実装をサポートしています) さて、一体なぜ CloseReason クラスが見つからないのでしょう! :( その場合はコンパイルされるべきではありませんね。
奇妙なことに、websocket の実装 (JSR 356) に関連する他のクラスについて文句を言っていないのに、サーバー (web-app) をデプロイしたところ、websocket メカニズムは問題なく動作しています。(私はそこにCloseReasonを実装していないと思います..しかし、なぜそれについてだけ不平を言っているのですか!:@)
提供されるヘルプは大歓迎です!!
乾杯、
別のスタック オーバーフロー オタクが助けを求めています。:)