Создал клиент и сервер, а затем добавил класс на стороне клиента для сериализации, а затем просто перешел в папку клиента на моем жестком диске и скопировал его в серверное соответствующее местоположение, как classname.class
, так и classname.java
соответственно.java.io.InvalidClassException: локальный класс несовместим:
Он работал хорошо в моем собственном ноутбуке, но когда я хотел бы продолжить свою работу по другой системе, когда я открыл папку проектов и после того, как клиент пытается соединиться с сервером, появляется следующее сообщение об ошибке:
Exception in thread "main" java.io.InvalidClassException: projectname.clasname; local class incompatible: stream classdesc serialVersionUID = -6009442170907349114, local class serialVersionUID = 6529685098267757690
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:562)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1582)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
Что происходит? Это потому, что я запускал программу со старой версией среды IDE?
EDIT
import java.io.Serializable;
import java.net.URL;
public class KeyAdr implements Serializable{
private static final long serialVersionUID = 6529685098267757690L;
public URL adr;
public String key;
}
как отрегулировать serialVersionUID в определении? – lonesome
по-прежнему такая же ошибка – lonesome
Это странно. Я бы дважды проверить, что обе стороны используют новейшую версию класса. – trutheality