sockets - Java throwing errors when client sends Object to server, with no errors/warnings in IDE -
somebody please help, have client , server , i'm sending object client in code says send packet of data:
class data implements serializable { /** * */ // private static final long serialversionuid = 1l; string = "ok baby"; string b = "hi there"; } public void connect(string[] args) throws ioexception { socket kksocket = null; printwriter out = null; objectoutputstream oos = null; bufferedreader in = null; try { kksocket = new socket("192.168.0.5", 1337); out = new printwriter(kksocket.getoutputstream(), true); oos = new objectoutputstream(kksocket.getoutputstream()); in = new bufferedreader(new inputstreamreader( kksocket.getinputstream())); } catch (unknownhostexception e) { system.err.println("don't know hostname, network problem."); system.exit(1); } catch (ioexception e) { system.err.println("couldn't connect server."); system.exit(1); } bufferedreader stdin = new bufferedreader(new inputstreamreader( system.in)); string fromserver; string fromuser; // send packet of data oos.writeobject(new data()); oos.flush(); // send packet of data
this code doesn't transmit , has error pop-up when tries send, mind helping me out here?
java.io.notserializableexception: java.lang.thread @ java.io.objectoutputstream.writeobject0(unknown source) @ java.io.objectoutputstream.defaultwritefields(unknown source) @ java.io.objectoutputstream.writeserialdata(unknown source) @ java.io.objectoutputstream.writeordinaryobject(unknown source) @ java.io.objectoutputstream.writeobject0(unknown source) @ java.io.objectoutputstream.writearray(unknown source) @ java.io.objectoutputstream.writeobject0(unknown source) @ java.io.objectoutputstream.access$300(unknown source) @ java.io.objectoutputstream$putfieldimpl.writefields(unknown source) @ java.io.objectoutputstream.writefields(unknown source) @ java.awt.container.writeobject(unknown source) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(unknown source) @ sun.reflect.delegatingmethodaccessorimpl.invoke(unknown source) @ java.lang.reflect.method.invoke(unknown source) @ java.io.objectstreamclass.invokewriteobject(unknown source) @ java.io.objectoutputstream.writeserialdata(unknown source) @ java.io.objectoutputstream.writeordinaryobject(unknown source) @ java.io.objectoutputstream.writeobject0(unknown source) @ java.io.objectoutputstream.writearray(unknown source) @ java.io.objectoutputstream.writeobject0(unknown source) @ java.io.objectoutputstream.access$300(unknown source) @ java.io.objectoutputstream$putfieldimpl.writefields(unknown source) @ java.io.objectoutputstream.writefields(unknown source) @ java.awt.container.writeobject(unknown source) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(unknown source) @ sun.reflect.delegatingmethodaccessorimpl.invoke(unknown source) @ java.lang.reflect.method.invoke(unknown source) @ java.io.objectstreamclass.invokewriteobject(unknown source) @ java.io.objectoutputstream.writeserialdata(unknown source) @ java.io.objectoutputstream.writeordinaryobject(unknown source) @ java.io.objectoutputstream.writeobject0(unknown source) @ java.io.objectoutputstream.writearray(unknown source) @ java.io.objectoutputstream.writeobject0(unknown source) @ java.io.objectoutputstream.access$300(unknown source) @ java.io.objectoutputstream$putfieldimpl.writefields(unknown source) @ java.io.objectoutputstream.writefields(unknown source) @ java.awt.container.writeobject(unknown source) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(unknown source) @ sun.reflect.delegatingmethodaccessorimpl.invoke(unknown source) @ java.lang.reflect.method.invoke(unknown source) @ java.io.objectstreamclass.invokewriteobject(unknown source) @ java.io.objectoutputstream.writeserialdata(unknown source) @ java.io.objectoutputstream.writeordinaryobject(unknown source) @ java.io.objectoutputstream.writeobject0(unknown source) @ java.io.objectoutputstream.writearray(unknown source) @ java.io.objectoutputstream.writeobject0(unknown source) @ java.io.objectoutputstream.access$300(unknown source) @ java.io.objectoutputstream$putfieldimpl.writefields(unknown source) @ java.io.objectoutputstream.writefields(unknown source) @ java.awt.container.writeobject(unknown source) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(unknown source) @ sun.reflect.delegatingmethodaccessorimpl.invoke(unknown source) @ java.lang.reflect.method.invoke(unknown source) @ java.io.objectstreamclass.invokewriteobject(unknown source) @ java.io.objectoutputstream.writeserialdata(unknown source) @ java.io.objectoutputstream.writeordinaryobject(unknown source) @ java.io.objectoutputstream.writeobject0(unknown source) @ java.io.objectoutputstream.defaultwritefields(unknown source) @ java.io.objectoutputstream.writeserialdata(unknown source) @ java.io.objectoutputstream.writeordinaryobject(unknown source) @ java.io.objectoutputstream.writeobject0(unknown source) @ java.io.objectoutputstream.writeobject(unknown source) @ citadelrpg.main.connect(main.java:124) @ citadelrpg.main.<init>(main.java:158) @ citadelrpg.main$2.run(main.java:269) @ java.awt.event.invocationevent.dispatch(unknown source) @ java.awt.eventqueue.dispatcheventimpl(unknown source) @ java.awt.eventqueue.access$000(unknown source) @ java.awt.eventqueue$3.run(unknown source) @ java.awt.eventqueue$3.run(unknown source) @ java.security.accesscontroller.doprivileged(native method) @ java.security.protectiondomain$1.dointersectionprivilege(unknown source) @ java.awt.eventqueue.dispatchevent(unknown source) @ java.awt.eventdispatchthread.pumponeeventforfilters(unknown source) @ java.awt.eventdispatchthread.pumpeventsforfilter(unknown source) @ java.awt.eventdispatchthread.pumpeventsforhierarchy(unknown source) @ java.awt.eventdispatchthread.pumpevents(unknown source) @ java.awt.eventdispatchthread.pumpevents(unknown source) @ java.awt.eventdispatchthread.run(unknown source) exception in thread "awt-eventqueue-0" java.lang.nullpointerexception @ citadelrpg.main$2.run(main.java:277) @ java.awt.event.invocationevent.dispatch(unknown source) @ java.awt.eventqueue.dispatcheventimpl(unknown source) @ java.awt.eventqueue.access$000(unknown source) @ java.awt.eventqueue$3.run(unknown source) @ java.awt.eventqueue$3.run(unknown source) @ java.security.accesscontroller.doprivileged(native method) @ java.security.protectiondomain$1.dointersectionprivilege(unknown source) @ java.awt.eventqueue.dispatchevent(unknown source) @ java.awt.eventdispatchthread.pumponeeventforfilters(unknown source) @ java.awt.eventdispatchthread.pumpeventsforfilter(unknown source) @ java.awt.eventdispatchthread.pumpeventsforhierarchy(unknown source) @ java.awt.eventdispatchthread.pumpevents(unknown source) @ java.awt.eventdispatchthread.pumpevents(unknown source) @ java.awt.eventdispatchthread.run(unknown source)
part of source used second answer this question, , java newbie.
the data class non-static inner class of outer class, extends thread or has attribute of type thread. every non-static inner class has implicit reference outer object. illustrate this, following code
public class outer extends thread { class data implements serializable { string = "ok baby"; string b = "hi there"; } ... }
is equivalent following :
public class outer extends thread ... } class data implements serializable { string = "ok baby"; string b = "hi there"; outer outer; }
so, when serializing instance of data, tries serialize outer object, , thread being non-serializable, breaks.
to fix problem, make data
inner class static, or make top-level class.
Comments
Post a Comment