2015-01-03 33 views
9

私は前もってmavenの依存関係を使用していませんが、jarファイルが見つからないことを知っていますwls-api.jar(少なくとも私が読んだものです)。Websocketクライアント実装クラスが見つかりませんでした

これを修正するにはoracle-weblogic-7.9.jarをダウンロードしましたが、問題は解決しません。

例外は、この行が連続して失敗した理由を

WebSocketContainer container = ContainerProvider.getWebSocketContainer(); 

誰も私を伝えることができ、このラインでスローされますか?

UPDATE:それは必要とされるように、さらに私は、この依存関係

<dependency> 
<groupId>javax.websocket</groupId> 
<artifactId>javax.websocket-api</artifactId> 
<version>1.0</version> 

を使用する参照例を読めば、私は、サーバーとクライアントのビルド・パスにjavax.websocket-api.jarを持っています。私はここで何が欠けていますか?

その他のアップデート:スローされたエラーを含めるのを忘れてしまった!

Exception in thread "main" java.lang.RuntimeException: Could not find an implementation class. 
at javax.websocket.ContainerProvider.getWebSocketContainer(ContainerProvider.java:73) 
at connect.<init>(connect.java:21) 
at test.main(test.java:11) 
+0

コードはどのような例外をスローしますか?あなたが依存関係を欠いているという事実は、依然として問題かもしれません。 –

+0

ご迷惑をおかけして申し訳ありませんが、さらにいくつかの情報と例外がスローされました。 –

答えて

17

javax.websocket apiは完全な実装をしていないため、jarファイルtyrus-standalone-client-1.9.jarを使用して問題を解決する必要がある場合があります。私は私の例でテストし、うまくいきます。

希望これはあなたを助けます。

+0

残念ながらあなたは正しいです、私がやったことは、クライアントとして動作するためにJavaScriptを使用するWebページを作っていた。私はまた、クライアントとして使用することができるオートバンWebsocketsのAPIを使用して電話アプリケーションを持っている。 –

1

私はあなたが経験しているRuntimeExceptionが、幸い、独自の任意の直接のコーディング障害によって生成されていないと思います。

getWebSocketContainer()は、hereのように、単に他のクラスを読み込み、サーバー内のContainerProviderの静的インスタンスを取得しようとします。

方法はnullないContainerProvider実装からWebSocketContainer実装を返し、META-INF/services/javax.websocket.ContainerProviderファイルに記載されている順序でContainerProvider実装クラスを探します。

残念ながら、プロジェクトが正しく設定されていないことを意味します。このファイルがプロジェクトのビルドパスに含まれていることを確認してください。

あなたが説明している他のプロジェクトが、あなたが記述したMaven依存関係を使用している場合は、同じようにプロジェクトをセットアップしようとします。

これが役に立った!

+0

ビルドパスでは、私はjavax.websocket-api-1.1.jarを持っていますが、これもlibフォルダに入れなければなりませんか?私はこの容器にContainerProviderが含まれていると言うことができます –

+0

私はlibフォルダは何も標準的ではないと思っていますが、それが動作するかどうか試してみてください。 –

+0

私はいくつかのプロジェクトを設定して、いつも同じ例外を受け取ります –

関連する問題