【Java】Kryo运行报错:Exception in thread “main“ java.lang.IllegalArgumentException:Class is not registered
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                【Java】Kryo运行报错:Exception in thread “main“ java.lang.IllegalArgumentException:Class is not registered
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                練習代碼如下:
import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.io.Input; import com.esotericsoftware.kryo.io.Output; import com.esotericsoftware.kryo.serializers.JavaSerializer;import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream;public class KryoDemo {public static void main(String[] args) {// 創建對象Person obj = new Person(123, "Sam");System.out.println(obj);// 序列化Kryo kryo = new Kryo();ByteArrayOutputStream os = new ByteArrayOutputStream();Output output = new Output(os);kryo.writeObject(output, obj);byte[] bytes = os.toByteArray();// 反序列化Input input = new Input(new ByteArrayInputStream(bytes));Person p = kryo.readObject(input, Person.class);System.out.println(p);}}運行報錯:
 Exception in thread “main” java.lang.IllegalArgumentException: Class is not registered: org.example.Person
 Note: To register this class use: kryo.register(org.example.Person.class);
 ?at com.esotericsoftware.kryo.Kryo.getRegistration(Kryo.java:512)
 ?at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:560)
 ?at org.example.KryoDemo.main(KryoDemo.java:21)
 
其實是因為缺了下面的語句:
kryo.register(Person.class, new JavaSerializer());完整代碼:
import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.io.Input; import com.esotericsoftware.kryo.io.Output; import com.esotericsoftware.kryo.serializers.JavaSerializer;import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream;public class KryoDemo {public static void main(String[] args) {// 創建對象Person obj = new Person(123, "Sam");System.out.println(obj);// 注冊實體類Kryo kryo = new Kryo();kryo.register(Person.class, new JavaSerializer());// 序列化ByteArrayOutputStream os = new ByteArrayOutputStream();Output output = new Output(os);kryo.writeObject(output, obj);byte[] bytes = os.toByteArray();// 反序列化Input input = new Input(new ByteArrayInputStream(bytes));Person p = kryo.readObject(input, Person.class);System.out.println(p);}}同樣地,Spark用到Kryo的時候也要注冊!此處不加贅述!
總結
以上是生活随笔為你收集整理的【Java】Kryo运行报错:Exception in thread “main“ java.lang.IllegalArgumentException:Class is not registered的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 字符串的展开(洛谷P1098题题解,Ja
 - 下一篇: 【计算机网络】FDM和TDM的传输总时间