나는 탄력성을 X509CertificateObject
org.apache.commons.lang3.SerializationUtils
을 사용하여 직렬화 및 역 직렬화하려고합니다. 역 직렬화 된 개체의 원래 직렬화 된 개체 (org.bouncycastle.jce.provider.X509CertificateObject
)와 다른 형식 (sun.security.x509.X509CertImpl
)이 분명히 있습니다. 결과적으로 캐스팅이 실패합니다. 내가 뭘 잘못하고 있니? 에서자바 직렬화 (X509CertificateObject)
public static void test(X509CertificateObject certObj) {
byte[] serializedObj;
Object deSerializedObj;
X509CertificateObject deSerializedCertObj;
X509Certificate deSerializedCert;
System.out.println("certObj type: " + certObj.getClass().getName());
serializedObj = SerializationUtils.serialize(certObj);
deSerializedObj = SerializationUtils.deserialize(serializedObj);
System.out.println("deSerializedObj type: " + deSerializedObj.getClass().getName());
deSerializedCert = (X509Certificate) deSerializedObj;
System.out.println("deSerializedCert type: " + deSerializedCert.getClass().getName());
deSerializedCertObj = (X509CertificateObject) deSerializedObj;
System.out.println("deSerializedCertObj type: " + deSerializedCertObj.getClass().getName());
}
결과 : X509Certificate
입니다 X509CertificateObject
의 상위 클래스, 추상 및/또는 X509CertificateObject
때문에 정의하지 않기 때문에
certObj type: org.bouncycastle.jce.provider.X509CertificateObject
deSerializedObj type: sun.security.x509.X509CertImpl
deSerializedCert type: sun.security.x509.X509CertImpl
마지막
java.lang.ClassCastException: sun.security.x509.X509CertImpl cannot be cast to org.bouncycastle.jce.provider.X509CertificateObject
at Test.test(Test.java:1010)
at Test.main(Test.java:153)
에서이인가 자신의 serialVersionUID
?
X509Certificate를 사용하여 해결되지 않은 문제가 무엇인지 알 수 없습니다. – EJP