Repository navigation
Open
Description
When trying to deserialize an object that refers to Java type from a package that has not been loaded yet, Jython (2.7.4) fails with an ImportError.
Code to reproduce:
new java.io.ObjectInputStream (new java.io.FileInputStream (new java.io.File ("..."))).readObject ();
Result (the binary blob refers to type java.awt.dnd.Autoscroll; chosen only as a member of a package unlikely to be loaded):
ImportError: No module named awt
at app//org.python.core.Py.ImportError(Py.java:327)
at app//org.python.core.imp.import_logic(imp.java:1292)
at app//org.python.core.imp.import_module_level(imp.java:1371)
at app//org.python.core.imp.importName(imp.java:1520)
at app//org.python.core.PyType$TypeResolver.readResolve(PyType.java:2674)
at java.base@21.0.5/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base@21.0.5/java.lang.reflect.Method.invoke(Method.java:580)
at java.base@21.0.5/java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1192)
at java.base@21.0.5/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2293)
at java.base@21.0.5/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1762)
at java.base@21.0.5/java.io.ObjectInputStream.readArray(ObjectInputStream.java:2186)
at java.base@21.0.5/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1750)
at java.base@21.0.5/java.io.ObjectInputStream$FieldValues.<init>(ObjectInputStream.java:2618)
at java.base@21.0.5/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2469)
at java.base@21.0.5/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2284)
at java.base@21.0.5/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1762)
at java.base@21.0.5/java.io.ObjectInputStream.readObject(ObjectInputStream.java:540)
at java.base@21.0.5/java.io.ObjectInputStream.readObject(ObjectInputStream.java:498)
Store the file from the attachment somewhere and insert the path into the oneliner above. (Had to pack serialized-not-yet-loaded-package.bin into a dummy tarball, because GitHub doesn't accept .bin attachments.)
Likely fix: in PyType.TypeResolver.readResolve() add a call to Class.forName() or something like that.
Metadata
Metadata
Assignees
Labels
No labels
Activity