Клиент Websocket Не удалось найти класс реализации

Я предварю это, я не использую никаких зависимостей maven, но я знаю, что мне не хватает файла jar wls-api.jar (по крайней мере, это то, что я прочитал).

Чтобы исправить это, я загрузил 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)

Ответ 1

javax.websocket api - это только спецификация не имеет полной реализации, вам может потребоваться взять файл jar tyrus-standalone-client-1.9.jar и попробовать тот же пример, который должен решить вашу проблему. Я тестировал свой пример, и он работает нормально.

надеюсь, что это поможет вам.

Ответ 3

Я думаю, что RuntimeException, с которым вы сталкиваетесь, к счастью не генерируется какой-либо прямой ошибкой кодирования.

Метод getWebSocketContainer(), как описано здесь, просто пытается загрузить другие классы и получить статический экземпляр ContainerProvider в сервер.

Метод ищет класс реализации ContainerProvider в порядке, указанном в файле META-INF/services/javax.websocket.ContainerProvider, возвращая реализацию WebSocketContainer из реализации ContainerProvider, которая не является null.

Это, к сожалению, означает, что ваш проект настроен неправильно. Двойная проверка, чтобы убедиться, что этот файл включен в ваш путь построения проекта.

Если другие проекты, которые вы ищете, используют описанную вами зависимость Maven, я бы попытался настроить ваш проект на то же самое.

Надеюсь, это помогло!

Ответ 4

Я использовал tyrus-standalone-client-1.9 и получил эту ошибку: javax.websocket.DeploymentException: Ошибка подключения: org.glassfish.tyrus.container.grizzly.client.GrizzlyClientSocket._connect (GrizzlyClientSocket.java:404)

Любой совет, как мне поступить?