From: Small, D. W. <ds...@mi...> - 2011-08-15 14:51:30
|
A project to make existing Python code work with Java clients uses a number of Python objects that implement imported Java interfaces. I need to be able to let Java clients serialize these objects to files. Specifying that the interface extends Serialization appears to work, as does having the Python objects import java.io.Serialization. However, under some circumstances, I am unable to read the serialized objects back in because of conflicting local and stored serialVersionUID values. So far, I have always been able to read the object back in, inside the Java class that serializes it. However, if I save the file, and later try to read it back in, some (but not all) objects fail. If I transfer the file to another computer with another OS, some objects that did not fail on the original machine now also fail. The Java Serialization documentation indicates that I should be supplying my own serialVersionUID instead of depending on the built-in algorithm to generate a default. I have not been able to find any way of setting my own serialVersionUID for a Python object. Setting it in the Java interface does not work; a value set inside the Python object, either as a class variable or as an instance variable, is not recognized. I get the same result if, instead of having the Python objects implement a Java interface, I have them subset a Java abstract class. Does anyone know of a way of setting the serialVersionUID inside Python, or of another solution to this problem? |
From: Alex G. <ale...@ne...> - 2011-08-15 15:59:37
|
15.08.2011 17:51, Small, Duane W. kirjoitti: > > A project to make existing Python code work with Java clients uses a > number of Python objects that implement imported Java interfaces. I > need to be able to let Java clients serialize these objects to files. > Specifying that the interface extends Serialization appears to work, > as does having the Python objects import java.io.Serialization. > However, under some circumstances, I am unable to read the serialized > objects back in because of conflicting local and stored > serialVersionUID values. > > So far, I have always been able to read the object back in, inside > the Java class that serializes it. However, if I save the file, and > later try to read it back in, some (but not all) objects fail. If I > transfer the file to another computer with another OS, some objects > that did not fail on the original machine now also fail. > > The Java Serialization documentation indicates that I should be > supplying my own serialVersionUID instead of depending on the built-in > algorithm to generate a default. I have not been able to find any way > of setting my own serialVersionUID for a Python object. Setting it in > the Java interface does not work; a value set inside the Python > object, either as a class variable or as an instance variable, is not > recognized. > > I get the same result if, instead of having the Python objects > implement a Java interface, I have them subset a Java abstract class. > > Does anyone know of a way of setting the serialVersionUID inside > Python, or of another solution to this problem? > If the remote side is Java, you should be using pure Java objects. If the remote side is Python/Jython, use pickle instead. > > > > ------------------------------------------------------------------------------ > uberSVN's rich system and user administration capabilities and model > configuration take the hassle out of deploying and managing Subversion and > the tools developers use with it. Learn more about uberSVN and get a free > download at: http://p.sf.net/sfu/wandisco-dev2dev > > > _______________________________________________ > Jython-users mailing list > Jyt...@li... > https://lists.sourceforge.net/lists/listinfo/jython-users |