Java SockJsClient抛出ClassCastException

Java SockJsClient抛出ClassCastException,java,jackson,spring-websocket,intellij-plugin,sockjs,Java,Jackson,Spring Websocket,Intellij Plugin,Sockjs,我试图在我的intellij IDEA插件中配置WebSocket连接,我得到了 2019-10-25 19:17:56,835 [ 81159] ERROR - roject.impl.ProjectManagerImpl - From the listener com.homework.plugin.PluginTasksProjectComponent$1@1c0e28b2 (class com.homework.plugin.PluginTasksProjectComponent$

我试图在我的intellij IDEA插件中配置WebSocket连接,我得到了

 2019-10-25 19:17:56,835 [  81159]  ERROR - roject.impl.ProjectManagerImpl - From the listener com.homework.plugin.PluginTasksProjectComponent$1@1c0e28b2 (class com.homework.plugin.PluginTasksProjectComponent$1) 
java.lang.ClassCastException: com.fasterxml.jackson.module.kotlin.KotlinModule cannot be cast to com.fasterxml.jackson.databind.Module
    at org.springframework.http.converter.json.Jackson2ObjectMapperBuilder.registerWellKnownModulesIfAvailable(Jackson2ObjectMapperBuilder.java:811)
    at org.springframework.http.converter.json.Jackson2ObjectMapperBuilder.configure(Jackson2ObjectMapperBuilder.java:650)
    at org.springframework.http.converter.json.Jackson2ObjectMapperBuilder.build(Jackson2ObjectMapperBuilder.java:633)
    at org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.<init>(MappingJackson2HttpMessageConverter.java:59)
    at org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter.<init>(AllEncompassingFormHttpMessageConverter.java:76)
    at org.springframework.web.client.RestTemplate.<init>(RestTemplate.java:150)
    at org.springframework.web.socket.sockjs.client.RestTemplateXhrTransport.<init>(RestTemplateXhrTransport.java:64)
    at com.homework.plugin.chat.WebSocket.<init>(WebSocket.java:39)
    at com.homework.plugin.PluginTasksProjectComponent$1.projectOpened(PluginTasksProjectComponent.java:72)
2019-10-25 19:17:56835[81159]错误-roject.impl.ProjectManagerImpl-来自listener com.comwork.plugin.PluginTasksProjectComponent$1@1c0e28b2(类com.homography.plugin.PluginTasksProjectComponent$1)
java.lang.ClassCastException:com.fasterxml.jackson.module.kotlin.KotlinModule无法强制转换为com.fasterxml.jackson.databind.module
位于org.springframework.http.converter.json.Jackson2ObjectMapperBuilder.RegisterWellKnownModule上(Jackson2ObjectMapperBuilder.java:811)
位于org.springframework.http.converter.json.Jackson2ObjectMapperBuilder.configure(Jackson2ObjectMapperBuilder.java:650)
位于org.springframework.http.converter.json.Jackson2ObjectMapperBuilder.build(Jackson2ObjectMapperBuilder.java:633)
位于org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.(MappingJackson2HttpMessageConverter.java:59)
位于org.springframework.http.converter.support.allencompacsingformhttpmessageconverter.(allencompacsingformhttpmessageconverter.java:76)
位于org.springframework.web.client.restemplate(restemplate.java:150)
位于org.springframework.web.socket.sockjs.client.restemplatexhrtransport。(restemplatexhrtransport.java:64)
在com.homography.plugin.chat.WebSocket.(WebSocket.java:39)
在com.homography.plugin.PluginTasksProjectComponent$1.projectOpened上(PluginTasksProjectComponent.java:72)
当我在独立应用程序中使用这段代码时,一切都很完美

public class WebSocket {
private static final String TOPIC_ADDED = "/topic/discussion%s/comments/added";
private static final String TOPIC_UPDATED = "/topic/discussion%s/comments/updated";
private static final String TOPIC_DELETED = "/topic/discussion%s/comments/deleted";
private static final String TOPIC_SEND = "/topic/discussion%s/comments";
private final String URL = "https://my.url/stomp-messages";

private StompSession stompSession;
private StompSessionHandler sessionHandler;
private StompSession.Subscription currentSubscription;


public WebSocket(JTextPane messagesTextPane) {
    sessionHandler = new MySessionHandler(messagesTextPane);
    List<Transport> transports = new ArrayList<>(2);
    transports.add(new WebSocketTransport(new StandardWebSocketClient()));
    transports.add(new RestTemplateXhrTransport());
    WebSocketClient client = new SockJsClient(transports);

    WebSocketStompClient stompClient = new WebSocketStompClient(client);
    stompClient.setMessageConverter(new MappingJackson2MessageConverter());
    stompClient.setTaskScheduler(new ConcurrentTaskScheduler());

    try {
        stompSession = stompClient.connect(URL, sessionHandler).get();
    } catch (InterruptedException | ExecutionException e) {
        e.printStackTrace();
    }
}
公共类WebSocket{
私有静态最终字符串TOPIC_ADDED=“/TOPIC/discussion%s/comments/ADDED”;
私有静态最终字符串TOPIC_UPDATED=“/TOPIC/discussion%s/comments/UPDATED”;
私有静态最终字符串TOPIC_DELETED=“/TOPIC/discussion%s/comments/DELETED”;
私有静态最终字符串TOPIC_SEND=“/TOPIC/discussion%s/comments”;
私有最终字符串URL=”https://my.url/stomp-messages";
私人StompSession StompSession;
私有StompSessionHandler sessionHandler;
私有StompSession.Subscription当前订阅;
公共WebSocket(JTextPane消息stextPane){
sessionHandler=newmysessionhandler(messagesTextPane);
列表传输=新的ArrayList(2);
添加(新WebSocketTransport(新标准WebSocketClient());
添加(新的RestTemplateXhrTransport());
WebSocketClient=新的SockJsClient(传输);
WebSocketStompClient stompClient=新的WebSocketStompClient(客户端);
setMessageConverter(新的MappingJackson2MessageConverter());
setTaskScheduler(新的ConcurrentTaskScheduler());
试一试{
stompSession=stompClient.connect(URL,sessionHandler.get();
}捕获(中断异常|执行异常e){
e、 printStackTrace();
}
}
异常在
新建RestTemplateXhrTransport()
对象创建的行抛出。 Jackson2ObjectMapperBuilder试图将一些Kotlin模块强制转换为模块类,但我不理解为什么这段代码不能在独立应用程序中执行


可能有人知道,问题的根源是什么?

问题已解决。我应该添加此依赖项

<dependency>
    <groupId>com.fasterxml.jackson.module</groupId>
    <artifactId>jackson-module-kotlin</artifactId>
    <version>2.10.0</version>
</dependency>

com.fasterxml.jackson.module
杰克逊模块科特林
2.10.0