java - How do I solve this serialization error on my log in/create account program? -


i'm writing simple gui program uses log in information text file. takes log in info gui program create's user accounts. i'm not sure how serialize effectively, it's i've learned recently. should do? how solve serialization error, , can improve , make functional.

user class:

package passwordprogram;  import java.util.arraylist; import java.util.arrays;  import java.awt.borderlayout; import java.awt.color; import java.awt.gridbagconstraints; import java.awt.gridbaglayout; import java.awt.event.actionevent; import java.awt.event.actionlistener;  import java.io.serializable;  import javax.swing.jbutton; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.jpanel; import javax.swing.jpasswordfield; import javax.swing.jtextfield; import javax.swing.uimanager;  public class user implements serializable, actionlistener {      public static arraylist<string> allusernames = new arraylist<string>();      string username;     string password;      public static void main(string[] args) {         try {             uimanager.setlookandfeel(uimanager.getsystemlookandfeelclassname());         } catch (exception e) {             e.printstacktrace();         }         user user = new user();         user.maingui();     }        jframe frame;     jpanel panel;     jtextfield createusername;     jpasswordfield createpassword;     jpasswordfield confirmpassword;     jbutton createaccount;     jlabel novalid;      public void maingui() {         novalid = new jlabel();         frame = new jframe("create new account!");         panel = new jpanel();         panel.setbackground(color.orange);         createpassword = new jpasswordfield(10);         confirmpassword = new jpasswordfield(10);         createusername = new jtextfield(10);         jlabel usertxt = new jlabel("new username: ");         jlabel userpass = new jlabel("new password: ");         jlabel confirmpass = new jlabel("confirm password: ");         createaccount = new jbutton("create account!");          panel.setlayout(new gridbaglayout());         gridbagconstraints left = new gridbagconstraints();         left.anchor = gridbagconstraints.west;         gridbagconstraints right = new gridbagconstraints();         right.anchor = gridbagconstraints.east;         right.weightx = 2.0;         right.fill = gridbagconstraints.horizontal;         right.gridwidth = gridbagconstraints.remainder;          frame.getcontentpane().add(borderlayout.north, novalid);         frame.getcontentpane().add(borderlayout.center, panel);         panel.add(usertxt, left);         panel.add(createusername, right);         panel.add(userpass, left);         panel.add(createpassword, right);         panel.add(confirmpass, left);         panel.add(confirmpassword, right);          frame.getcontentpane().add(borderlayout.south, createaccount);         frame.setvisible(true);         frame.setsize(500, 300);          createaccount.addactionlistener(this);     }      public void actionperformed(actionevent event) {         if (createusername.gettext().length() <= 0 ) {             novalid.settext("that not valid username. please try again.");             frame.getcontentpane().add(borderlayout.north, novalid);         }          else if (allusernames.contains(createusername.gettext())) {             novalid.settext("that username taken. please try again.");             frame.getcontentpane().add(borderlayout.north, novalid);         }          else if (!(arrays.equals(createpassword.getpassword(), confirmpassword.getpassword()))) {             novalid.settext("your passwords not match!");             frame.getcontentpane().add(borderlayout.north, novalid);         } else {                 saveuser suser = new saveuser();             suser.createaccount(this);             novalid.settext("account created successfully");             frame.getcontentpane().add(borderlayout.north, novalid);         }     } } 

saveuser class(serialization)

package passwordprogram;  import java.io.fileoutputstream; import java.io.objectoutputstream; import java.io.serializable;  public class saveuser implements serializable{     public void createaccount(user u) {         try {             fileoutputstream fileos = new fileoutputstream("userinfo.ser");             objectoutputstream objectos = new objectoutputstream(fileos);             objectos.writeobject(u);             objectos.close();         } catch (exception e) {             e.printstacktrace();         }     } } 

here's error when try , run user class.

java.io.notserializableexception: passwordprogram.user     @ java.io.objectoutputstream.writeobject0(unknown source)     @ java.io.objectoutputstream.writeobject(unknown source)     @ passwordprogram.saveuser.createaccount(saveuser.java:12)     @ passwordprogram.user.actionperformed(user.java:104)     @ javax.swing.abstractbutton.fireactionperformed(unknown source)     @ javax.swing.abstractbutton$handler.actionperformed(unknown source)     @ javax.swing.defaultbuttonmodel.fireactionperformed(unknown source)     @ javax.swing.defaultbuttonmodel.setpressed(unknown source)     @ javax.swing.abstractbutton.doclick(unknown source)     @ javax.swing.plaf.basic.basicrootpaneui$actions.actionperformed(unknown source)     @ javax.swing.swingutilities.notifyaction(unknown source)     @ javax.swing.jcomponent.processkeybinding(unknown source)     @ javax.swing.keyboardmanager.firebinding(unknown source)     @ javax.swing.keyboardmanager.firekeyboardaction(unknown source)     @ javax.swing.jcomponent.processkeybindingsforallcomponents(unknown source)     @ javax.swing.jcomponent.processkeybindings(unknown source)     @ javax.swing.jcomponent.processkeyevent(unknown source)     @ java.awt.component.processevent(unknown source)     @ java.awt.container.processevent(unknown source)     @ java.awt.component.dispatcheventimpl(unknown source)     @ java.awt.container.dispatcheventimpl(unknown source)     @ java.awt.component.dispatchevent(unknown source)     @ java.awt.keyboardfocusmanager.redispatchevent(unknown source)     @ java.awt.defaultkeyboardfocusmanager.dispatchkeyevent(unknown source)     @ java.awt.defaultkeyboardfocusmanager.predispatchkeyevent(unknown source)     @ java.awt.defaultkeyboardfocusmanager.typeaheadassertions(unknown source)     @ java.awt.defaultkeyboardfocusmanager.dispatchevent(unknown source)     @ java.awt.component.dispatcheventimpl(unknown source)     @ java.awt.container.dispatcheventimpl(unknown source)     @ java.awt.window.dispatcheventimpl(unknown source)     @ java.awt.component.dispatchevent(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.security.protectiondomain$1.dointersectionprivilege(unknown source)     @ java.awt.eventqueue$4.run(unknown source)     @ java.awt.eventqueue$4.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) 

and here's log in class:

package passwordprogram;

import java.awt.borderlayout; import java.awt.color; import java.awt.gridbagconstraints; import java.awt.gridbaglayout; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.io.fileinputstream; import java.io.objectinputstream;  import javax.swing.jbutton; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.jpanel; import javax.swing.jpasswordfield; import javax.swing.jtextfield; import javax.swing.uimanager;   public class loginscreen implements actionlistener {       public static void main(string[] args) {         try {         uimanager.setlookandfeel(uimanager.getsystemlookandfeelclassname());         }          catch (exception e) {         }         loginscreen logger = new loginscreen();         logger.start();     } 

personally, think object serialization on kill in situation.

you write details text file...

public testfileio() {     try {         writeuser(new file("user.inf"), "test", "password".tochararray());     } catch (ioexception ex) {         ex.printstacktrace();     } }  public void writeuser(file file, string name, char[] password) throws ioexception {     bufferedwriter bw = null;     try {         bw = new bufferedwriter(new filewriter(file));         bw.write(name);         bw.newline();         bw.write(password);         bw.flush();     } {         try {             bw.close();         } catch (exception e) {         }     } } 

this write user name , password file, separating each new line.

if need more 1 user in file, simple write user name password on same line, using predefined delimiter...

public testfileio() {     try {         writeuser(new file("user.inf"), "test", "password".tochararray());     } catch (ioexception ex) {         ex.printstacktrace();     } }  public void writeuser(file file, string name, char[] password) throws ioexception {     bufferedwriter bw = null;     try {         bw = new bufferedwriter(new filewriter(file));         bw.write(name);         bw.write(";");         bw.write(password);         bw.flush();     } {         try {             bw.close();         } catch (exception e) {         }     } } 

now, if worried saving password plain text, (and world) save password md5 hash...

public testfileio() {     try {         writeuser(new file("user.inf"), "test", "password".tochararray());     } catch (exception ex) {         ex.printstacktrace();     } }  public void writeuser(file file, string name, char[] password) throws ioexception, nosuchalgorithmexception {      bufferedwriter bw = null;      try {         messagedigest md = messagedigest.getinstance("md5");         byte[] bytes = new byte[password.length];         (int = 0; < bytes.length; i++) {             bytes[i] = (byte) password[i];         }         md.update(bytes);         byte[] mdbytes = md.digest();          stringbuffer sb = new stringbuffer();         (int = 0; < mdbytes.length; i++) {             sb.append(integer.tostring((mdbytes[i] & 0xff) + 0x100, 16).substring(1));         }          bw = new bufferedwriter(new filewriter(file));         bw.write(name);         bw.newline();         bw.write(sb.tostring());         bw.flush();     } {         try {             bw.close();         } catch (exception e) {         }     } } 

Comments

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

jquery - Fancybox - apply a function to several elements -

An easy way to program an Android keyboard layout app -