2015-01-03 11 views
9

Ich werde das vorstellen mit Ich verwende keine Maven-Abhängigkeiten, aber ich weiß, dass mir eine Jar-Datei fehlt wls-api.jar (zumindest das ist was ich gelesen habe).Websocket-Client Konnte keine Implementierungsklasse finden

Um dies zu beheben, habe ich die oracle-weblogic-7.9.jar heruntergeladen, aber das Problem besteht fort. nicht kontinuierlich

Die Ausnahme wird an dieser Linie geworfen mich

WebSocketContainer container = ContainerProvider.getWebSocketContainer(); 

Kann mir jemand sagen, warum diese Linie?

UPDATE: auf weiter die Beispiele Lesen ich sehen diese Abhängigkeit

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

I javax.websocket-api.jar in den Build-Pfad des Servers haben und dem Kunden, wie es erforderlich ist. Was fehlt mir hier?

Andere Aktualisierung: Ich habe vergessen, den Fehler enthalten enthalten!

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

Welche Ausnahme wirft der Code? Die Tatsache, dass Sie eine Abhängigkeit vermissen, kann immer noch ein Problem sein. –

+0

Entschuldigung, ich habe meine Frage aktualisiert, um weitere Informationen sowie die Ausnahme anzugeben! –

Antwort

17

javax.websocket api ist nur die Spezifikation nicht vollständige Implementierung müssen Sie möglicherweise die JAR-Datei tyrus-standalone-client-1.9.jar und versuchen Sie das gleiche Beispiel, das Ihr Problem lösen sollte. Ich habe mit meinem Beispiel getestet und es funktioniert gut.

hoffe das wird dir helfen.

+0

Leider hast du recht, was ich am Ende getan habe, war eine Webseite zu machen, die Javascript als Client benutzt. Ich habe auch eine Telefonanwendung mit dem Autobahn-Websockets-API, das als Client verwendet werden kann. –

1

Ich denke, die RuntimeException Sie erleben, ist glücklicherweise nicht durch eine direkte Codierung Fehler Ihrerseits erzeugt.

Die Methode getWebSocketContainer(), wie beschrieben here, versucht einfach, andere Klassen zu laden und die statische Instanz der ContainerProvider im Server zu erhalten.

Die Methode sucht die ContainerProvider Implementierungsklasse in der Reihenfolge, in der Datei META-INF/services/javax.websocket.ContainerProvider aufgelistet, die Rückkehr WebSocketContainer Umsetzung von der ContainerProvider Implementierung, die nicht null ist.

Dies bedeutet leider, dass Ihr Projekt nicht korrekt konfiguriert ist. Überprüfen Sie, ob diese Datei im Buildpfad Ihres Projekts enthalten ist.

Wenn andere Projekte, die Sie betrachten, die von Ihnen beschriebene Maven-Abhängigkeit verwenden, würde ich versuchen, Ihr Projekt so einzurichten.

Hoffe das half!

+0

Im Build-Pfad muss ich die javax.websocket-api-1.1.jar muss ich auch in den lib-Ordner legen? Von dem, was ich sagen kann, enthält dieses Gefäß den ContainerProvider –

+0

Ich glaube nicht, dass der lib-Ordner nichts Standard ist, aber versuchen Sie es und sehen, ob es funktioniert. –

+0

Ich habe ein paar weitere Projekte eingerichtet und bekomme immer die selbe Ausnahme –

Verwandte Themen