2017-05-23 3 views
0

java.time.Year의 오브젝트를 직렬화 및 비 직렬화하려고하고있는 중에, 직렬화 에러를 발행 해, stackOverflow에 실장합니다.java.time.Year의 헤 시안 직렬화와 직렬화 복원

java.lang.StackOverflowError 
    at com.caucho.hessian.util.IdentityIntMap.get(IdentityIntMap.java:112) 
    at com.caucho.hessian.io.Hessian2Output.getRef(Hessian2Output.java:1359) 
    at com.caucho.hessian.io.WriteReplaceSerializer.writeObject(WriteReplaceSerializer.java:144) 
    at com.caucho.hessian.io.Hessian2Output.writeObject(Hessian2Output.java:465) 
    at com.caucho.hessian.io.UnsafeSerializer$ObjectFieldSerializer.serialize(UnsafeSerializer.java:297) 
    at com.caucho.hessian.io.UnsafeSerializer.writeInstance(UnsafeSerializer.java:216) 
    at com.caucho.hessian.io.UnsafeSerializer.writeObject(UnsafeSerializer.java:170) 

이 오류를 재현하는 샘플 코드는 다음과 같습니다 '년'(org.joda.time.Years) joda 시간

@Test 
public void testHessianSerializeDeserialize() throws IOException { 
    ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
    Hessian2Output out = new Hessian2Output(bos); 

    out.startMessage(); 
    Year y1 = Year.of(2017); 
    out.writeObject(y1); 

    out.completeMessage(); 
    out.close(); 

    byte[] data = bos.toByteArray(); 

    // Deserialize 
    ByteArrayInputStream bin = new ByteArrayInputStream(data); 
    Hessian2Input in = new Hessian2Input(bin); 

    in.startMessage(); 
    Assert.assertEquals(y1, (Year) in.readObject()); 

    in.completeMessage(); 
    in.close(); 
    bin.close(); 
} 

답변

0

사용 java.time.Year가를 제공하지 않습니다 대신 헤 시안 직렬화 및 직렬화 복원 오류.