Re: local class incompatible: stream classdesc



Thnks Nigel. It works for me :)
Nigel Wade wrote:
babz wrote:

Hi everyone,

I am using eclipse IDE and i have two different projects A and B. I
serialize an object that belongs to project B and deserialize it later.
But I am doing this serialization/deserilization in project A.

I have two ways in project A to use the classes of project B.

OPTION 1: create a jar file of classes of project B and add it as an
external jar to project A.
OPTION 2: add project B to the build path of project A. (In this way i
have an access to the source code of project B as well. So changing
something in project B will not require me to create its jar file again
and refresh project A).

Then I have another application, call it C, that uses the jar files of
projects A and B. If I use option 1 and then create project A's jar and
project B's jar and give it to the application C, the
serialization/deserialization works. but if i use option 2 in eclipse
and build the respective jar files and try running the application with
these jar files, I get the following exception:

java.io.InvalidClassException:
com.cambridgedocs.jpdf.pdo.fonts.PdoTrueTypeFont; local class
incompatible: stream classdesc serialVersionUID = -3611946473283033478,
local class serialVersionUID = 387207963493818039
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:463)
at
java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1521)
at
java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1435)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1626)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
at

I want it to run it successfully through both ways

Can someone help??

Thanks,

Babz

OPTION 1 is the correct way to do things. Duplicating class files is not the way
to go. OPTION 2 has created two .class files for the same .java source file,
and each of them has a different UID.

However, you can make it work if you define a serialVersionUID for each class
that you wish to serialize. In fact Eclipse now warns you if you don't do this.

Just add the following at the start of each class which will be serialized:

private static final long serialVersionUID = <largenumber>L;

where <largenumber> is an arbitrary integer which is unique to each class. You
should do this for *every* class which is serialized, and that means classes
contained in other classes, including anonymous inner classes.

--
Nigel Wade, System Administrator, Space Plasma Physics Group,
University of Leicester, Leicester, LE1 7RH, UK
E-mail : nmw@xxxxxxxxxxxx
Phone : +44 (0)116 2523548, Fax : +44 (0)116 2523555

.



Relevant Pages

  • local class incompatible: stream classdesc
    ... I am using eclipse IDE and i have two different projects A and B. I ... Then I have another application, call it C, that uses the jar files of ... com.cambridgedocs.jpdf.pdo.fonts.PdoTrueTypeFont; local class ... stream classdesc serialVersionUID = -3611946473283033478, ...
    (comp.lang.java.programmer)
  • Re: local class incompatible: stream classdesc
    ... I am using eclipse IDE and i have two different projects A and B. I ... Then I have another application, call it C, that uses the jar files of ... stream classdesc serialVersionUID = -3611946473283033478, ... University of Leicester, Leicester, LE1 7RH, UK ...
    (comp.lang.java.programmer)
  • Re: [Eclipse 3.1] serialVersionUID
    ... Ah und vergessen: Am 21.7 wurde hier ein Thread zu dem Thema gestartet: ... serialVersionUID in Eclipse ... Next by Date: ...
    (de.comp.lang.java)
  • serialver?
    ... OK, experienced developer, but new to Java (and eclipse, which is another ... of several of these existing ones and want to generate a serialVersionUID ...
    (comp.lang.java.programmer)
  • Generate serialVersionUID in Eclipse for serializable object
    ... When it's a good time to generate this serialVersionUID (say in ... Eclipse)? ... In the very beginning when creating this object class? ... middle of writing this class is ok? ...
    (comp.lang.java.programmer)