Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / October 2006

Tip: Looking for answers? Try searching our database.

local class incompatible: stream classdesc

Thread view: 
babz - 13 Oct 2006 12:01 GMT
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
Nigel Wade - 13 Oct 2006 15:44 GMT
> Hi everyone,
>
[quoted text clipped - 40 lines]
>
> 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.

Signature

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

babz - 16 Oct 2006 05:44 GMT
Thnks Nigel. It works for me :)

> > Hi everyone,
> >
[quoted text clipped - 61 lines]
> E-mail :    nmw@ion.le.ac.uk
> Phone :     +44 (0)116 2523548, Fax : +44 (0)116 2523555


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2009 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.