java - Getting a NotSerializableException even though all the objects I'm sending are Serializable -
okay, have class extends jframe , i'm trying create jpanel takes in information , sends out "event" object when submit button pressed. seems working, except when press submit, tells me client needs serializable... (the client class basic class opens connection specific port. works, i've tested , it's not problem). have serialized objects sending. don't understand why getting notserializableexception. been trying figure out hours now. insight appreciated.
here code:
public class windowgameactual extends jframe implements actionlistener { private final static int port = 11114; private gamestate game; public windowclient connection; jpanel container; jtextarea description; jtextfield difficulty; jcheckbox check4; jcheckbox check6; jcheckbox check8; jcheckbox check12; jcheckbox check20; jcheckbox agl; jcheckbox str; jcheckbox mana; public class windowclient extends client { public windowclient(string host) throws ioexception { super(host, port); } protected void messagereceived(object message) { if(message instanceof gamestate) { game = (gamestate) message; container.repaint(); } } } //end windowclient public windowgameactual(string host) { setdefaultcloseoperation(exit_on_close); game = new gamestate(); try { connection = new windowclient(host); } catch (ioexception e) { // todo auto-generated catch block e.printstacktrace(); } container = new jpanel(); gridlayout gridc = new gridlayout(3, 1); container.setlayout(gridc); currenteventpanel curevt = new currenteventpanel(game); curevt.updateevent(game); container.add(curevt); // controlpanel eventcontrol = new controlpanel(host); // container.add(eventcontrol); gridlayout outerpanel = new gridlayout(4, 1); jpanel control = new jpanel(); control.setlayout(outerpanel); jpanel layer1 = new jpanel(); jlabel edescription = new jlabel("describe event:"); layer1.add(edescription); description = new jtextarea(""); description.seteditable(true); description.setcolumns(17); layer1.add(description); control.add(layer1); jpanel layer2 = new jpanel(); jlabel edifficulty = new jlabel("event difficulty (integers only):"); layer2.add(edifficulty); difficulty = new jtextfield(""); difficulty.seteditable(true); difficulty.setcolumns(2); layer2.add(difficulty); jbutton submit = new jbutton("submit"); submit.addactionlistener(this); submit.setpreferredsize(new dimension(74, 22)); layer2.add(submit); control.add(layer2); jpanel layer3 = new jpanel(); jlabel dice = new jlabel("dice: "); layer3.add(dice); jlabel d4 = new jlabel("d4"); check4 = new jcheckbox(); layer3.add(d4); layer3.add(check4); jlabel d6 = new jlabel("d6"); check6 = new jcheckbox(); layer3.add(d6); layer3.add(check6); jlabel d8 = new jlabel("d8"); check8 = new jcheckbox(); layer3.add(d8); layer3.add(check8); jlabel d12 = new jlabel("d12"); check12 = new jcheckbox(); layer3.add(d12); layer3.add(check12); jlabel d20 = new jlabel("d20"); check20 = new jcheckbox(); layer3.add(d20); layer3.add(check20); control.add(layer3); jpanel layer4 = new jpanel(); jlabel skills = new jlabel("skills required: "); layer4.add(skills); jlabel strlabel = new jlabel("str"); str = new jcheckbox(); layer4.add(strlabel); layer4.add(str); jlabel agllabel = new jlabel("agl"); agl = new jcheckbox(); layer4.add(agllabel); layer4.add(agl); jlabel manalabel = new jlabel("mana"); mana = new jcheckbox(); layer4.add(manalabel); layer4.add(mana); control.add(layer4); container.add(control); // setpreferredsize(new dimension(200, 20)); userstatpanel stats = new userstatpanel(game); stats.updatestatpanel(game); container.add(stats); add(container); setvisible(true); } public class event implements serializable { public string eventdescription ; public string diff ; public boolean strchecked ; public boolean aglchecked ; public boolean manachecked ; public boolean d4checked ; public boolean d6checked ; public boolean d8checked ; public boolean d12checked ; public boolean d20checked; public event() { eventdescription = description.gettext(); diff = difficulty.gettext(); strchecked = str.isselected(); aglchecked = agl.isselected(); manachecked = mana.isselected(); d4checked = check4.isselected(); d6checked = check6.isselected(); d8checked = check8.isselected(); d12checked = check12.isselected(); d20checked = check20.isselected(); } } event nevent; public void actionperformed(actionevent evt) { string cmd = evt.getactioncommand(); if(cmd.equals("submit")) { nevent = new event(); connection.send(nevent); } } }
here error message (it's abnormally short):
client send thread terminated ioexception: java.io.notserializableexception: testgame.windowgameactual$windowclient client send thread terminated. client receive thread terminated. hub receive thread terminated ioexception: java.io.writeabortedexception: writing aborted; java.io.notserializableexception: testgame.windowgameactual$windowclient
if need of other classes let me know.
thank you!
the exception message says windowclient not serializable. reasonable way fix make client (which windowclient extends) serializable
Comments
Post a Comment