首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2ME开发 >

Uncaught exception java/lang/NullPointerException.解决方法

2012-01-06 
Uncaught exception java/lang/NullPointerException.退出的时候出现Uncaughtexceptionjava/lang/NullPoin

Uncaught exception java/lang/NullPointerException.
退出的时候出现Uncaught   exception   java/lang/NullPointerException.

帮帮忙看一下。
package   com.mobile;

import   javax.microedition.midlet.*;

import   javax.microedition.io.*;

import   javax.microedition.lcdui.*;

import   java.io.*;

public   class   SocketMIDlet   extends   MIDlet   implements   CommandListener   {

  private   static   final   String   SERVER   =   "Server ";

  private   static   final   String   CLIENT   =   "Client ";

  private   static   final   String[]   names   =   {   SERVER,   CLIENT   };

  private   static   Display   display;

  private   Form   f;

  private   ChoiceGroup   cg;

  private   boolean   isPaused;

  private   Server   server;

  private   Client   client;

  private   Command   exitCommand   =   new   Command( "Exit ",   Command.EXIT,   1);

  private   Command   startCommand   =   new   Command( "Start ",   Command.ITEM,   1);

  public   SocketMIDlet()   {

    display   =   Display.getDisplay(this);

    f   =   new   Form( "Socket   Demo ");

    cg   =   new   ChoiceGroup( "Please   select   peer ",   Choice.EXCLUSIVE,   names,

        null);

    f.append(cg);

    f.addCommand(exitCommand);

    f.addCommand(startCommand);

    f.setCommandListener(this);

    display.setCurrent(f);

  }

  public   boolean   isPaused()   {

    return   isPaused;

  }

  public   void   startApp()   {

    isPaused   =   false;

  }

  public   void   pauseApp()   {

    isPaused   =   true;

  }

  public   void   destroyApp(boolean   unconditional)   {
    if   (server   !=   null)   {

      server.stop();

    }
    if   (client   !=   null)   {

      client.stop();

    }
  }

  public   void   commandAction(Command   c,   Displayable   s)   {

    if   (c   ==   exitCommand)   {

      destroyApp(true);

      notifyDestroyed();

    }   else   if   (c   ==   startCommand)   {

      String   name   =   cg.getString(cg.getSelectedIndex());

      if   (SERVER.equals(name))   {

        server   =   new   Server(this);

        server.start();

      }   else   {

        client   =   new   Client(this);



        client.start();

      }

    }

  }

}


package   com.mobile;

import   javax.microedition.midlet.*;

import   javax.microedition.io.*;

import   javax.microedition.lcdui.*;

import   java.io.*;

public   class   Server   implements   Runnable,   CommandListener   {

  private   SocketMIDlet   parent;

  private   Display   display;

  private   Form   f;

  private   StringItem   si;

  private   TextField   tf;

  private   boolean   stop;

  private   Command   sendCommand   =   new   Command( "Send ",   Command.ITEM,   1);

  private   Command   exitCommand   =   new   Command( "Exit ",   Command.EXIT,   1);

  DataInputStream   is;

  DataOutputStream   os;

  SocketConnection   sc;

  ServerSocketConnection   scn=null;

  Sender   sender;

  public   Server(SocketMIDlet   m)   {

    parent   =   m;

    display   =   Display.getDisplay(parent);

    f   =   new   Form( "Socket   Server ");

    si   =   new   StringItem( "Status: ",   "   ");

    tf   =   new   TextField( "Send: ",   " ",   30,   TextField.ANY);

    f.append(si);

    f.append(tf);

    f.addCommand(exitCommand);

    f.setCommandListener(this);

    display.setCurrent(f);

  }

  public   void   start()   {

    Thread   t   =   new   Thread(this);

    t.start();

  }

  public   void   run()   {

    try   {

      si.setText( "Waiting   for   connection ");

      scn   =   (ServerSocketConnection)   Connector.open( "socket://:5009 ");

      //   Wait   for   a   connection.

      sc   =   (SocketConnection)   scn.acceptAndOpen();

      si.setText( "Connection   accepted ");

      is   =   sc.openDataInputStream();

      os   =   sc.openDataOutputStream();
     
      sender   =   new   Sender(os);

      //   Allow   sending   of   messages   only   after   Sender   is   created

      f.addCommand(sendCommand);

      while   (true)   {

       
       
        String   str= " ";
        String   strapend= " ";
        while   (((str   =   is.readUTF())!=   null)   &&   (!str.equals( "\r\n ")))   {


        //ss=ss+(char)   c
        System.out.println( "Server: "+str);
        strapend=strapend+str;

        }

        if   (str   ==   null)   {

          break;

        }

        //   Display   message   to   user
       
        si.setText( "Message   received   -   "   +   strapend);
      }

      stop();

      si.setText( "Connection   is   closed ");

      f.removeCommand(sendCommand);

    }   catch   (IOException   ioe)   {

      if   (ioe.getMessage().equals( "ServerSocket   Open "))   {

        Alert   a   =   new   Alert( "Server ",   "Port   5000   is   already   taken. ",

            null,   AlertType.ERROR);

        a.setTimeout(Alert.FOREVER);

        a.setCommandListener(this);

        display.setCurrent(a);

      }   else   {

        if   (!stop)   {

          ioe.printStackTrace();

        }

      }

    }   catch   (Exception   e)   {

      e.printStackTrace();

    }

  }

  public   void   commandAction(Command   c,   Displayable   s)   {

    if   (c   ==   sendCommand   &&   !parent.isPaused())   {

      sender.send(tf.getString());

    }

    if   ((c   ==   Alert.DISMISS_COMMAND)   ||   (c   ==   exitCommand))   {

    parent.destroyApp(true);
      parent.notifyDestroyed();

     

    }

  }

  /**

    *   Close   all   open   streams

    */

  public   void   stop()   {

    try   {

      stop   =   true;

      if   (is   !=   null)   {

        is.close();

      }

      if   (os   !=   null)   {

        os.close();

      }

      if   (sc   !=   null)   {

        sc.close();

      }

      if   (scn   !=   null)   {

        scn.close();

      }

    }   catch   (IOException   ioe)   {

    }



  }

}



[解决办法]
NullPointerException,是你编程错误,

看看exception栈,看出现在哪里,那附近有变量没初始化,或者被赋为null了。

热点排行