Java 新客户端上的Kryonet()给出异常;无法创建序列化程序…”;
我正试图获得一个简单的客户机/服务器类来进行通信,以便以后用于在我的游戏中实现MP。问题是,当我执行Java 新客户端上的Kryonet()给出异常;无法创建序列化程序…”;,java,networking,game-development,kryonet,Java,Networking,Game Development,Kryonet,我正试图获得一个简单的客户机/服务器类来进行通信,以便以后用于在我的游戏中实现MP。问题是,当我执行newclient()时,我发现无法创建序列化程序异常,这显然是由于Kryonet jar中的ASM库过时而导致的问题 好吧,我去做的正是:更新库。我仍然得到错误。最后,我继续尝试在会议上提出的解决方案 但它仍然不起作用 我对这些想法感到茫然,没有更多的在线解决方案与我尝试过的不同,并且严重地浪费了我的时间。我真的需要克服这一点,把它扩大到我的比赛。错误如下: Exception in threa
newclient()
时,我发现无法创建序列化程序异常,这显然是由于Kryonet jar中的ASM库过时而导致的问题
好吧,我去做的正是:更新库。我仍然得到错误。最后,我继续尝试在会议上提出的解决方案
但它仍然不起作用
我对这些想法感到茫然,没有更多的在线解决方案与我尝试过的不同,并且严重地浪费了我的时间。我真的需要克服这一点,把它扩大到我的比赛。错误如下:
Exception in thread "main" java.lang.IllegalArgumentException: Unable to create serializer "com.esotericsoftware.kryo.serializers.FieldSerializer" for class: com.esotericsoftware.kryonet.FrameworkMessage$RegisterTCP
at com.esotericsoftware.kryo.Kryo.newSerializer(Kryo.java:337)
at com.esotericsoftware.kryo.Kryo.newDefaultSerializer(Kryo.java:316)
at com.esotericsoftware.kryo.Kryo.getDefaultSerializer(Kryo.java:309)
at com.esotericsoftware.kryo.Kryo.register(Kryo.java:353)
at com.esotericsoftware.kryonet.KryoSerialization.<init>(KryoSerialization.java:33)
at com.esotericsoftware.kryonet.KryoSerialization.<init>(KryoSerialization.java:25)
at com.esotericsoftware.kryonet.Client.<init>(Client.java:75)
at com.esotericsoftware.kryonet.Client.<init>(Client.java:57)
at gamep2.net.client.GameClient.<init>(GameClient.java:30)
at gamep2.net.client.GameClient.main(GameClient.java:55)
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.esotericsoftware.kryo.Kryo.newSerializer(Kryo.java:324)
... 9 more
Caused by: java.lang.IncompatibleClassChangeError: Found interface org.objectweb.asm.MethodVisitor, but class was expected
at com.esotericsoftware.reflectasm.FieldAccess.insertConstructor(FieldAccess.java:144)
at com.esotericsoftware.reflectasm.FieldAccess.get(FieldAccess.java:109)
at com.esotericsoftware.kryo.serializers.FieldSerializer.rebuildCachedFields(FieldSerializer.java:104)
at com.esotericsoftware.kryo.serializers.FieldSerializer.<init>(FieldSerializer.java:50)
... 14 more
现在是服务器类:
public class Start {
private static Server server;
private int port = 54556;
public Start() throws IOException{
server = new Server();
registerPackets();
server.addListener(new NetworkListener());
server.bind(port);
server.start();
System.out.println("Port: " + port);
System.out.println("Starting server...");
}
private void registerPackets(){
Kryo kryo = server.getKryo();
kryo.register(Packet0LoginRequest.class);
kryo.register(Packet1LoginAnswer.class);
kryo.register(Packet2Message.class);
}
public static void main(String[] args){
try {
new Start();
Log.set(Log.LEVEL_DEBUG);
} catch (IOException e) {
e.printStackTrace();
}
}
}
嘿,你能弄明白吗?
public class Start {
private static Server server;
private int port = 54556;
public Start() throws IOException{
server = new Server();
registerPackets();
server.addListener(new NetworkListener());
server.bind(port);
server.start();
System.out.println("Port: " + port);
System.out.println("Starting server...");
}
private void registerPackets(){
Kryo kryo = server.getKryo();
kryo.register(Packet0LoginRequest.class);
kryo.register(Packet1LoginAnswer.class);
kryo.register(Packet2Message.class);
}
public static void main(String[] args){
try {
new Start();
Log.set(Log.LEVEL_DEBUG);
} catch (IOException e) {
e.printStackTrace();
}
}
}