This is the mail archive of the kawa@sources.redhat.com mailing list for the Kawa project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Making Serializable Classes


Hi kawa'ers--

I was experimenting with creating classes in Kawa, and was curious about making
Serializable classes.

So I tried this:

(define-simple-class <MyClass> (<java.io.Serializable>)
       (x type: <int> init-value: 33 init-keyword: x:))

(define obj (make <MyClass>))
(define baos (make <java.io.ByteArrayOutputStream>))
(define oos (make <java.io.ObjectOutputStream> baos))
(invoke oos 'writeObject obj)
(define ois (make <java.io.ObjectInputStream> (make
<java.io.ByteArrayInputStream> (invoke baos 'toByteArray))))
(define obj1 (invoke ois 'readObject))

I expected an error when I invoked 'writeObject.  But that worked fine...

What didn't work fine was deserializing the object:  I get the following error
java.lang.ClassNotFoundException: MyClass
 at java.net.URLClassLoader$1.run(URLClassLoader.java:201)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.net.URLClassLoader.findClass(URLClassLoader.java:189)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:308)
 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:264)
 at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:324)
 at java.lang.Class.forName0(Native Method)
 at java.lang.Class.forName(Class.java:212)
 at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:546)
 at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1491)
 at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1413)
 at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1604)
 at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1252)
 at java.io.ObjectInputStream.readObject(ObjectInputStream.java:323)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:42)

 at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:28)

 at java.lang.reflect.Method.invoke(Method.java:313)
 at gnu.expr.PrimProcedure.applyV(PrimProcedure.java:142)
 at gnu.mapping.MethodProc.applyN(MethodProc.java:133)
 at gnu.kawa.reflect.Invoke.applyN(Invoke.java:149)
 at gnu.kawa.reflect.Invoke.applyN(Invoke.java:49)
 at gnu.expr.ApplyExp.eval(ApplyExp.java:46)
 at gnu.expr.SetExp.eval(SetExp.java:88)
 at gnu.expr.Expression.eval(Expression.java:21)
 at gnu.expr.ModuleExp.evalModule(ModuleExp.java:182)
 at kawa.Shell.run(Shell.java:77)
 at kawa.Shell.run(Shell.java:32)
 at kawa.SocketRepl.apply0(repl.java:491)
 at gnu.mapping.Future.run(Future.java:59)

Curious if there's a way to get this to work...

Ranjan



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]