1

私は学校で日食を使ってサムドライブで作業していて、サムドライブを家に持ち帰りました。

次回プログラムを実行したときに、突然このエラーが発生しました。

 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:338)
    at com.esotericsoftware.kryo.Kryo.newDefaultSerializer(Kryo.java:317)
    at com.esotericsoftware.kryo.Kryo.getDefaultSerializer(Kryo.java:310)
    at com.esotericsoftware.kryo.Kryo.register(Kryo.java:354)
    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:73)
    at com.esotericsoftware.kryonet.Client.<init>(Client.java:55)
    at test.TestClient.<init>(TestClient.java:32)
    at test.TestClient.main(TestClient.java:39)
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:532)
    at com.esotericsoftware.kryo.Kryo.newSerializer(Kryo.java:325)
    ... 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

この種のエラーは見たことがなく、修正方法がわかりません。kryonet ライブラリを使用するたびに発生します。利用可能なソリューションはありますか?

4

2 に答える 2

1

職場のパートナーにも同じエラーがありました。古い「asm」ライブラリを使用したことが原因でした。最新の Kryo (この記事の執筆時点では 2.18) が asm 4.x を必要とするとき、彼は 3.X を使用していました。asm ライブラリを更新すると、問題が修正されました。

于 2012-09-15T00:08:47.877 に答える