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