Uncaught exception java/lang/NullPointerException.

saiche05 2007-06-22 10:17:11
退出的时候出现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) {

}

}

}

...全文
2982 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongdong715 2007-07-11
  • 打赏
  • 举报
回复
你应该把问题问得清楚点,不要帖太多代码出来,,起码先找出是哪部分代码有可能是发生这样的错误,再帖出来,还有你有点高傲了,这里没什么高手,每个人都是拿这些破技术混了饭吃而已,
yanhan0615 2007-07-11
  • 打赏
  • 举报
回复
你的连接地址错了
youngplayee 2007-07-11
  • 打赏
  • 举报
回复
谁家的孩子这么懒?连空指针异常都要找人帮忙解决。。。
saiche05 2007-07-11
  • 打赏
  • 举报
回复
lubin1119() ( ) 信誉:100 Blog 加为好友 2007-7-5 12:34:14 得分: 0
高手不是帮你看这种sb问题的。。。。

csdn是交流的地方,不是你来泼妇的地方。
不想交流就不要插嘴,影响国人的形象!
zslenglish 2007-07-10
  • 打赏
  • 举报
回复
呵呵
这属于sb问题?
lubin1119 2007-07-05
  • 打赏
  • 举报
回复
高手不是帮你看这种sb问题的。。。。
saiche05 2007-07-03
  • 打赏
  • 举报
回复
高手去哪了?
saiche05 2007-06-22
  • 打赏
  • 举报
回复
运行SocketMIDlet两次打开server和client
saiche05 2007-06-22
  • 打赏
  • 举报
回复
package com.mobile;

import javax.microedition.midlet.*;

import javax.microedition.io.*;

import javax.microedition.lcdui.*;

import java.io.*;

public class Client implements Runnable, CommandListener {

private SocketMIDlet parent;

private Display display;

private Form f;

private StringItem si;

private TextField tf;

private boolean stop=false;

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

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

DataInputStream is;

DataOutputStream os;

SocketConnection sc;

Sender sender;

public Client(SocketMIDlet m) {

parent = m;

display = Display.getDisplay(parent);

f = new Form("Socket Client");

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

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

f.append(si);

f.append(tf);

f.addCommand(exitCommand);

f.addCommand(sendCommand);

f.setCommandListener(this);

display.setCurrent(f);

}

/**

* Start the client thread

*/

public void start() {

Thread t = new Thread(this);

t.start();

}

public void run() {

try {

sc = (SocketConnection) Connector.open("socket://localhost:5009");

si.setText("Connected to server");

is = sc.openDataInputStream();

os = sc.openDataOutputStream();

// Start the thread for sending messages - see Sender's main

// comment for explanation

sender = new Sender(os);

// Loop forever, receiving data

while (true) {

StringBuffer sb = new StringBuffer();

int c = 0;
String str="";
String strapend="";
while (((str = is.readUTF())!= null) && (!str.equals("\r\n"))) {
//ss=ss+(char) c
System.out.println("Client:"+str);
//strapend=strapend+str;

}

if (str == null) {

break;

}

// Display message to user

si.setText("Message received - " + strapend);

}

stop();

si.setText("Connection closed");

f.removeCommand(sendCommand);

} catch (ConnectionNotFoundException cnfe) {

Alert a = new Alert("Client", "Please run Server MIDlet first",

null, AlertType.ERROR);

a.setTimeout(Alert.FOREVER);

a.setCommandListener(this);

display.setCurrent(a);

} catch (IOException ioe) {

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 (sender != null) {

sender.stop();

}

if (is != null) {

is.close();

}

if (os != null) {

os.close();

}

if (sc != null) {

sc.close();

}

} catch (IOException ioe) {

}

}

}

------------------------------------

package com.mobile;

import javax.microedition.midlet.*;

import javax.microedition.io.*;

import javax.microedition.lcdui.*;

import java.io.*;

public class Sender extends Thread {

private DataOutputStream os;

private String message;

public Sender(DataOutputStream os) {

this.os = os;

start();

}

public synchronized void send(String msg) {

message = msg;

notify();
System.out.println("1212121212");
}

public synchronized void run() {

while (true) {

// If no client to deal, wait until one connects

if (message == null) {

try {

wait();

} catch (InterruptedException e) {

}

}

if (message == null) {

break;

}

try {

os.writeUTF(message);
os.writeUTF("\r\n");

} catch (IOException ioe) {
ioe.printStackTrace();

}

// Completed client handling, return handler to pool and

// mark for wait

message = null;

}

}

public synchronized void stop() {

message = null;

notify();

}

}


zhmt 2007-06-22
  • 打赏
  • 举报
回复
NullPointerException,是你编程错误,

看看exception栈,看出现在哪里,那附近有变量没初始化,或者被赋为null了。
zhmt 2007-06-22
  • 打赏
  • 举报
回复
搬个板凳,呵呵

帮顶,"saiche05(赛车)"

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧