netty socketio服务器中的java.lang.NoSuchMethodError
我正在尝试启动netty socketio服务器中的java.lang.NoSuchMethodError,java,sockets,socket.io,Java,Sockets,Socket.io,我正在尝试启动nettysocketio服务器,但无法跟踪此异常的起源。我已经在stacktrace中标记了可能导致答案的位置,因此如果有人能够对此提供解释,将不胜感激 public class SocketIoServer { private Configuration cnf = new Configuration(); private SocketIOServer server; public SocketIoServer() { Configu
nettysocketio
服务器,但无法跟踪此异常的起源。我已经在stacktrace中标记了可能导致答案的位置,因此如果有人能够对此提供解释,将不胜感激
public class SocketIoServer {
private Configuration cnf = new Configuration();
private SocketIOServer server;
public SocketIoServer() {
Configuration config = new Configuration();
config.setHostname("localhost");
config.setPort(8081);
server = new SocketIOServer(config);
server.start();
}
}
初始化套接字时会引发异常。以下是上下文:
Exception in thread "main" java.lang.IllegalArgumentException:
java.lang.reflect.InvocationTargetException
at com.corundumstudio.socketio.Configuration.<init>(Configuration.java:112)
at com.corundumstudio.socketio.SocketIOServer.<init>(SocketIOServer.java:66)
at SocketIoServer.<init>(SocketIoServer.java:17)
at Server.main(Server.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at com.corundumstudio.socketio.Configuration.<init>(Configuration.java:109)
... 8 more
线程“main”java.lang.IllegalArgumentException中的异常:
java.lang.reflect.InvocationTargetException
位于com.corundumstudio.socketio.Configuration.(Configuration.java:112)
位于com.corundumstudio.socketio.SocketIOServer.(SocketIOServer.java:66)
在SocketIoServer上。(SocketIoServer.java:17)
位于Server.main(Server.java:19)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:606)
位于com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
原因:java.lang.reflect.InvocationTargetException
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:526)
位于com.corundumstudio.socketio.Configuration.(Configuration.java:109)
... 8个以上
尤其是这一行
Caused by: java.lang.NoSuchMethodError:
com.fasterxml.jackson.databind.module.SimpleModule.setSerializerModifier(Lcom/fasterxml/jackson/databind/ser/BeanSerializerModifier;)Lcom/fasterxml/jackson/databind/module/SimpleModule;
at com.corundumstudio.socketio.protocol.JacksonJsonSupport.init(JacksonJsonSupport.java:316)
at com.corundumstudio.socketio.protocol.JacksonJsonSupport.<init>(JacksonJsonSupport.java:311)
at com.corundumstudio.socketio.protocol.JacksonJsonSupport.<init>(JacksonJsonSupport.java:304)
... 13 more
原因:java.lang.NoSuchMethodError:
com.fasterxml.jackson.databind.module.SimpleModule.setSerializerModifier(Lcom/fasterxml/jackson/databind/ser/BeanSerializerModifier;)Lcom/fasterxml/jackson/databind/module/SimpleModule;
位于com.corundumstudio.socketio.protocol.JacksonJsonSupport.init(JacksonJsonSupport.java:316)
位于com.corundumstudio.socketio.protocol.JacksonJsonSupport.(JacksonJsonSupport.java:311)
位于com.corundumstudio.socketio.protocol.JacksonJsonSupport.(JacksonJsonSupport.java:304)
... 还有13个
您的项目中的版本显然存在冲突,实际上类com.corundumstudio.socketio.protocol.JacksonJsonSupport
依赖于自版本2.2
以来添加的方法,因此它找不到此方法,这意味着您的类路径中有一个早于2.2
的jackson-databind
版本,因此无法找到该方法
检查类路径中的所有jar,确保只有一个版本的
jackson-databind
对应于netty-socketio
所期望的版本。例如,假设您使用的是netty socketio的版本1.7.12
,jackson databind的预期版本是2.7.4
。您的项目中显然存在版本冲突,实际上,类com.corundumstudio.socketio.protocol.JacksonJsonSupport
依赖于自版本2.2
以来添加的方法,因此它找不到该方法,这意味着您的类路径中有一个早于2.2
的jackson-databind
版本,因此无法找到该方法
检查类路径中的所有jar,确保只有一个版本的jackson-databind
对应于netty-socketio
所期望的版本。例如,假设您使用的是netty socketio
的1.7.12
版本,您可以看到jackson-databind的预期版本是2.7.4
。谢谢,这正是问题所在。谢谢,这正是问题所在。