web-dev-qa-db-fra.com

Websocket Client Impossible de trouver une classe d'implémentation

Je commencerai par dire que je n'utilise aucune dépendance maven, mais je sais qu'il me manque un fichier jar wls-api.jar (du moins, c'est ce que j'ai lu).

Pour remédier à cela, j'ai téléchargé le Oracle-weblogic-7.9.jar mais le problème persiste. 

L'exception est levée à cette ligne

 WebSocketContainer container = ContainerProvider.getWebSocketContainer();

Quelqu'un peut-il me dire pourquoi cette ligne échoue continuellement?

UPDATE: après avoir lu les exemples, je vois utiliser cette dépendance

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

J'ai javax.websocket-api.jar dans le chemin de compilation du serveur et du client tel que requis. Qu'est-ce que j'oublie ici? 

Autre mise à jour: j'ai oublié d'inclure l'erreur renvoyée!

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)
11
Michael Miner

javax.websocket api n’est que la spécification n’ayant pas une implémentation complète, vous devrez peut-être utiliser le fichier jar tyrus-standalone-client-1.9.jar et essayer le même exemple qui devrait résoudre votre problème. J'ai testé avec mon exemple et cela fonctionne bien.

j'espère que ceci vous aidera.

21
Rajendar Reddy

Ajouter 

// https://mvnrepository.com/artifact/org.glassfish.tyrus.bundles/tyrus-standalone-client

groupe de compilation: 'org.glassfish.tyrus.bundles', nom: 'tyrus-standalone-client', version: '1.9'

à mon build.gradle le fichier a fonctionné pour moi.

1
dlaagniechy

Je pense que la RuntimeException que vous rencontrez n’est heureusement pas générée par une faute de codage direct de votre part.

La méthode getWebSocketContainer(), telle que décrite here , essaie simplement de charger d'autres classes et d'extraire l'instance statique de ContainerProvider sur le serveur.

La méthode recherche la classe d'implémentation ContainerProvider dans l'ordre indiqué dans le fichier META-INF/services/javax.websocket.ContainerProvider, en renvoyant l'implémentation WebSocketContainer à partir de l'implémentation ContainerProvider qui n'est pas null.

Malheureusement, cela signifie que votre projet n'est pas configuré correctement. Vérifiez deux fois pour vous assurer que ce fichier est inclus dans le chemin de génération de votre projet.

Si d'autres projets que vous étudiez utilisent la dépendance Maven que vous avez décrite, j'essaierais de configurer votre projet de la même manière.

J'espère que cela a aidé!

1
James Taylor