java - NullPointerException from ObjectInputStream -


i getting nullpointerexception when amtrying object through objectinputstream via socket. using server send information client (android phone) through transferobject. know server sending object because when sends error read fine , throws no exceptions. sent classes serializable, contain serialversionid, , contained in both projects.

code:

transferobject data = null;  try {     socket s = new socket();                                             s.connect(new inetsocketaddress(host, port), 10000);     objectoutputstream oos = new objectoutputstream(s.getoutputstream());     objectinputstream ois = new objectinputstream(s.getinputstream());      send.setuser(useremail);     send.setpassword(password);      oos.writeobject(send);     oos.flush();      object inputobject = ois.readobject();   //error happens here.     data = (transferobject) inputobject;       s.close();     return data; } 

and here transferobject:

public class transferobject implements serializable {      private static final long serialversionuid = *******************l;  //blanked out      public string command;     public string args;     public object[] objects;      private string password;     private string user;      public transferobject() {     }      public transferobject(string command, string args, object[] objects) {         this.objects = objects;         this.args = args;         this.command = command;     }      public string getpassword() {         return this.password;     }      public void setpassword(string password) {         this.password = password;     }      public string getuser() {         return this.user;     }      public void setuser(string user) {         this.user = user;     } } 

and lastly, dreaded log:

07-20 14:38:16.044: e/androidruntime(2451): fatal exception: asynctask #1 07-20 14:38:16.044: e/androidruntime(2451): process: com.********************.**********.timecardmanager, pid: 2451 07-20 14:38:16.044: e/androidruntime(2451): java.lang.runtimeexception: error occured while executing doinbackground() 07-20 14:38:16.044: e/androidruntime(2451):     @ android.os.asynctask$3.done(asynctask.java:304) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.util.concurrent.futuretask.finishcompletion(futuretask.java:355) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.util.concurrent.futuretask.setexception(futuretask.java:222) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.util.concurrent.futuretask.run(futuretask.java:242) 07-20 14:38:16.044: e/androidruntime(2451):     @ android.os.asynctask$serialexecutor$1.run(asynctask.java:231) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1112) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:587) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.lang.thread.run(thread.java:818) 07-20 14:38:16.044: e/androidruntime(2451): caused by: java.lang.nullpointerexception: attempt invoke virtual method 'boolean java.lang.class.isproxy()' on null object reference 07-20 14:38:16.044: e/androidruntime(2451):     @ java.lang.reflect.proxy.isproxyclass(proxy.java:261) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectstreamclass.resolveproperties(objectstreamclass.java:1016) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectstreamclass.isenum(objectstreamclass.java:1040) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectstreamclass.checkandgettcobjectclass(objectstreamclass.java:1341) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.readnewobject(objectinputstream.java:1788) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.readcontent(objectinputstream.java:707) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.discarddata(objectinputstream.java:636) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.readobjectforclass(objectinputstream.java:1348) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.readhierarchy(objectinputstream.java:1242) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.readnewobject(objectinputstream.java:1835) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.readnonprimitivecontent(objectinputstream.java:761) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.readobject(objectinputstream.java:1983) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.readobject(objectinputstream.java:1940) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.readfieldvalues(objectinputstream.java:1113) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.defaultreadobject(objectinputstream.java:454) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.readobjectforclass(objectinputstream.java:1345) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.readhierarchy(objectinputstream.java:1242) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.readnewobject(objectinputstream.java:1835) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.readnonprimitivecontent(objectinputstream.java:761) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.readobject(objectinputstream.java:1983) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.readobject(objectinputstream.java:1940) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.readnewarray(objectinputstream.java:1488) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.readnonprimitivecontent(objectinputstream.java:759) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.readobject(objectinputstream.java:1983) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.readobject(objectinputstream.java:1940) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.readfieldvalues(objectinputstream.java:1113) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.defaultreadobject(objectinputstream.java:454) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.readobjectforclass(objectinputstream.java:1345) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.readhierarchy(objectinputstream.java:1242) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.readnewobject(objectinputstream.java:1835) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.readnonprimitivecontent(objectinputstream.java:761) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.readobject(objectinputstream.java:1983) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.io.objectinputstream.readobject(objectinputstream.java:1940) 07-20 14:38:16.044: e/androidruntime(2451):     @ com.********************.**********.timecardmanager.mainactivity.sendtoserver(mainactivity.java:158) 07-20 14:38:16.044: e/androidruntime(2451):     @ com.********************.**********.timecardmanager.timecardfragment$getcardstask.doinbackground(timecardfragment.java:81) 07-20 14:38:16.044: e/androidruntime(2451):     @ com.********************.**********.timecardmanager.timecardfragment$getcardstask.doinbackground(timecardfragment.java:1) 07-20 14:38:16.044: e/androidruntime(2451):     @ android.os.asynctask$2.call(asynctask.java:292) 07-20 14:38:16.044: e/androidruntime(2451):     @ java.util.concurrent.futuretask.run(futuretask.java:237) 07-20 14:38:16.044: e/androidruntime(2451):     ... 4 more 

thanks in advance.

edit: server side. run each time new client connects on new thread.

try     {         objectoutputstream oos = new objectoutputstream(soc.getoutputstream());         objectinputstream ois = new objectinputstream(soc.getinputstream());          transferobject obj = (transferobject) ois.readobject();          switch(obj.command)         {             case "req":                 javatimecard[] javacards = bullhorntools.getjavacards(obj.getuser(), obj.getpassword());                  if(javacards == null)                 {                     obj.command = "err";                     obj.args = bullhorntools.geterror();                     obj.setuser("");                     obj.setpassword("");                      oos.writeobject(obj);                     oos.flush();                 }                 else                 {                     obj.command = "akk";                     obj.args = "";                     obj.objects = new object[javacards.length];                     obj.setuser("");                     obj.setpassword("");                      for(int = 0; < javacards.length; i++)                     {                         obj.objects[i] = javacards[i];                     }                      oos.writeobject(obj);                     oos.flush();                 }                  break;                case "save":                 //todo: implement later                 break;         }          soc.close();     }     catch (ioexception e)      {         e.printstacktrace();     }      catch (classnotfoundexception e)      {         e.printstacktrace();     } 

i tried test serializing, storing in file, , reading in. worked fine, therefore i'm going assume android thing. selvin said, used json.

as possible lack of clearness, apologize.


Comments