读书人

Uncaught exception java/lang/NullPo

发布时间: 2012-01-06 22:55:18 作者: rapoo

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了。

读书人网 >J2ME开发

热点推荐