2012-11-28 34 views
7

Tôi đã lưu một đối tượng java trong Cơ sở dữ liệu và sau vài ngày tôi đã thay đổi phiên bản jre của mình. Bây giờ khi tôi đã cố gắng để đọc mà cùng một đối tượng Tôi nhận được sau ngoại lệ:Làm cách nào để loại bỏ InvalidClassException SerialVersionUID?

Exception in thread "main" java.io.InvalidClassException: 
SerializeMe; local class incompatible: stream classdesc 
serialVersionUID = -6377573678240024862, local class serialVersionUID = -8204757486033751616 

Làm thế nào tôi có thể thoát khỏi điều này, làm thế nào tôi có thể nhận được các đối tượng lưu?

hãy giúp tôi.

+4

Đây là lý do tại sao bạn nên luôn xác định rõ ràng SUID của bạn bằng cách này. – Perception

Trả lời

8

Nếu bạn có thể ảnh hưởng đến mã nguồn của lớp này và JRE chỉ là thứ đã thay đổi, rất có thể bạn vẫn có thể deserialize đối tượng đã được tuần tự hóa bởi JVM cũ hơn. Chỉ cần xác định trường sau trong lớp để được deserialized:

private static final long serialVersionUID = -6377573678240024862L; 
Các vấn đề liên quan