При работе с веб-сокетами, в частности с сервером веб-сокетов, я продолжаю сталкиваться с той же проблемой; кажется, он не может найти jsr356.ClientContainer.
Информация: java: при компиляции модуля 'ModuleXXX' возникли ошибки Информация: javac 11.0.4 использовалась для компиляции java источников Информация: 08/01/2020 10 : 23 - Сборка завершена с 1 ошибкой и 0 предупреждениями за 2 с 15 мс C: \ путь \ к \ проекту \ ProjectXX \ ModuleXXX \ src \ main \ java \ Websockets \ WebsocketServer. java Ошибка: (74, 24 ) java: невозможно получить доступ>> файл класса org.eclipse.jetty.websocket.jsr356.ClientContainer для org.eclipse.jetty.websocket.jsr356.ClientContainer не найден Информация: java: при компиляции модуля 'ChessServer' возникли ошибки
Вот код, о котором идет речь:
public static void startWebSocketServer() {
Server webSocketServer = new Server();
ServerConnector connector = new ServerConnector(webSocketServer);
connector.setPort(PORT);
webSocketServer.addConnector(connector);
try {
)
ServletContextHandler webSocketContext = new ServletContextHandler(ServletContextHandler.SESSIONS);
webSocketContext.setContextPath("/");
webSocketServer.setHandler(webSocketContext);
WebSocketServerContainerInitializer.configure(webSocketContext, (servletContext, serverContainer) -> {
serverContainer.addEndpoint(WebsocketsCommunicatorService.class);
});
webSocketServer.start();
webSocketServer.join();
} catch (Throwable t) {
t.printStackTrace(System.err);
}
}
Трассировка стека "указывает" на использование ServerContainer.
Вот мой Pom:
<dependencies>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>javax-websocket-server-impl</artifactId>
<version>9.4.25.v20191220</version>
<exclusions>
<exclusion>
<artifactId>javax.websocket-api</artifactId>
<groupId>javax.websocket</groupId>
</exclusion>
<exclusion>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-client-api</artifactId>
</exclusion>
<!-- https://mvnrepository.com/artifact/javax.activation/activation -->
<exclusion>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/org.eclipse.jetty.websocket/websocket-client -->
<dependency>
<groupId>org.eclipse.jetty.websocket</groupId>
<artifactId>websocket-client</artifactId>
<version>9.4.25.v20191220</version>
</dependency>
Впоследствии я добавил client-impl, чтобы посмотреть, решит ли это проблему, но это не так. Насколько я могу судить, проблема в server-impl или websocket-api. jsr356 правильно использует ServerContainer, но в этом файле есть ссылка на ClientContainer, которую он не может найти. Исключением в POM является предотвращение разделения пакетов, где javax.websocket используется javax.websocket.server и javax.websocket.client. Я работаю в java 11.
Как это исправить?