明天老师检查,我还没有解决这个空指针异常,急死我啦!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 在电脑上面运行的好好的socket程序,放到Android上面就老出现空指针异常明天老师要东西的时候,我怎么演示给他看啊,一堆的空指针异常!!!我怎么办啊?找了好几个人都解决不了,难道是疑难绝症吗???????????? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 程序信息见帖子:那一解决的Socket空指针异常,大家帮我看一吧!!!!!!!!!!!!!!!!!!!!!!!!!!!! [移动平台 Android] 出现空指针异常的地方用红色标出。public static Response sendTextRequest(Request request) throws IOException {Response response = null;try {// 发送请求System.out.println(request.getAttribute("id"));System.out.println(request.getAttribute("pwdFld"));ClientDataBuffer.oos.writeObject(request);ClientDataBuffer.oos.flush();System.out.println("客户端发送了请求对象:" + request.getAction()); 出现空指针异常的地方用红色标出。public static Response sendTextRequest(Request request) throws IOException {Response response = null;try {// 发送请求System.out.println(request.getAttribute("id"));//有值System.out.println(request.getAttribute("pwdFld"));//有值System.out.println(ClientDataBuffer.oos);//为空ClientDataBuffer.oos.writeObject(request);ClientDataBuffer.oos.flush();System.out.println("客户端发送了请求对象:" + request.getAction());ClientDataBufferhi是客户端缓存,/** 客户端数据缓存 */public class ClientDataBuffer{ public static String currentUser; /** 当前客户端的用户信息 */ public static String onlineUsers;/** 在线用户列表 */ public static Socket clientSocket;/** 当前客户端连接到服务器的套节字 */ public static ObjectOutputStream oos;/** 当前客户端连接到服务器的输出流 */ public static ObjectInputStream ois;/** 当前客户端连接到服务器的输入流 */ public static Properties configProp;/** 服务器配置参数属性集 */ //public static Dimension screenSize;/** 当前客户端的屏幕尺寸 */ public static String ip ;/** 本客户端的IP地址 */ public static final int RECEIVE_FILE_PORT = 6666;/** 用来接收文件的端口 */ static{ //screenSize = Toolkit.getDefaultToolkit().getScreenSize(); configProp = new Properties();//加载服务器配置文件 try { ip = InetAddress.getLocalHost().getHostAddress(); configProp.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("serverconfig.properties")); } catch (IOException e) {e.printStackTrace();} } private ClientDataBuffer(){ clientSocket = new Socket(); }} 到底谁空,那个对象?ClientDataBuffer?这个吗 +1LZ可否提供错误日志应该是oos这个静态成员变量初始化的地方有问题,楼主可否查看一下相应的代码 我就是确定不了到底哪个为空,所以才解决不了这个问题的。这是错误日志:11-13 08:29:26.107: ERROR/AndroidRuntime(374): java.lang.NullPointerException11-13 08:29:26.107: ERROR/AndroidRuntime(374): at com.Client.ClientUtil.sendTextRequest(ClientUtil.java:17)11-13 08:29:26.107: ERROR/AndroidRuntime(374): at com.Client.LoginActivity$2.onClick(LoginActivity.java:88)11-13 08:29:26.107: ERROR/AndroidRuntime(374): at android.view.View.performClick(View.java:2485)11-13 08:29:26.107: ERROR/AndroidRuntime(374): at android.view.View$PerformClick.run(View.java:9080)11-13 08:29:26.107: ERROR/AndroidRuntime(374): at android.os.Handler.handleCallback(Handler.java:587)11-13 08:29:26.107: ERROR/AndroidRuntime(374): at android.os.Handler.dispatchMessage(Handler.java:92)11-13 08:29:26.107: ERROR/AndroidRuntime(374): at android.os.Looper.loop(Looper.java:123)11-13 08:29:26.107: ERROR/AndroidRuntime(374): at android.app.ActivityThread.main(ActivityThread.java:3683)11-13 08:29:26.107: ERROR/AndroidRuntime(374): at java.lang.reflect.Method.invokeNative(Native Method)11-13 08:29:26.107: ERROR/AndroidRuntime(374): at java.lang.reflect.Method.invoke(Method.java:507)11-13 08:29:26.107: ERROR/AndroidRuntime(374): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)11-13 08:29:26.107: ERROR/AndroidRuntime(374): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)11-13 08:29:26.107: ERROR/AndroidRuntime(374): at dalvik.system.NativeStart.main(Native Method) System.out.println(request.getAttribute("id"));//有值System.out.println(request.getAttribute("pwdFld"));//有值System.out.println(ClientDataBuffer.oos);//为空这些都是我打印的,在出现异常的那句话中ClientDataBuffer.oos.writeObject(request);我已经把能打印的都打印了,从结果来看,肯定是ClientDataBuffer.oos.出现的异常,所以我就在试了一下:ObjectOutputStream oos;oos.writeObject(request);结果还是为空,所以我判断不是oos出现的空指针异常,那么就只剩下ClientDataBuffer了,上面我已经吧ClientDataBuffer.java的代码贴出来了,我实在看不出里面有什么问题, System.out.println(ClientDataBuffer),ClientDataBuffer这个是空吗? ClientDataBuffer不能打印,System.out.println(ClientDataBuffer)会显示错误 这一些程序我用在PC版客户端上,都是运行良好的,莫非是在Android上,socket的使用方法有所不同? System.out.println(ClientDataBuffer.oos);//为空只看这一句就知道oos必然没有初始化,也难怪报空了,检查一下逻辑吧,看看运行下来的时候这个oos初始化没有 没找到这段代码里面有赋值给oos的代码,查下serverconfig.properties里面吧 说了半天初始化oos,到底要怎样初始化它呢?我越来越糊涂了。哪位给个初始化例子啊???? 文件上传(实现断点续传) Android 希望给代码。多谢! 初学者问题:android+sqlite查询报错 android中opengl es 贴图问题,很急 求助,拖动图标怎么实现 android手机飞行模式无法关闭,求解 Eclipse下 Android系统如何实现双机的互联 弱弱的问个问题 android怎么输出system语句啊 android 与 C++ 之无情无意 关于wireshark http之data模块问题(附图片) android新手求问大神android dependencies问题 按屏大小取图的大小,在线等 解压缩问题
public static Response sendTextRequest(Request request) throws IOException {
Response response = null;
try {
// 发送请求
System.out.println(request.getAttribute("id"));
System.out.println(request.getAttribute("pwdFld"));
ClientDataBuffer.oos.writeObject(request);
ClientDataBuffer.oos.flush();
System.out.println("客户端发送了请求对象:" + request.getAction());
public static Response sendTextRequest(Request request) throws IOException {
Response response = null;
try {
// 发送请求
System.out.println(request.getAttribute("id"));//有值
System.out.println(request.getAttribute("pwdFld"));//有值
System.out.println(ClientDataBuffer.oos);//为空
ClientDataBuffer.oos.writeObject(request);
ClientDataBuffer.oos.flush();
System.out.println("客户端发送了请求对象:" + request.getAction());ClientDataBufferhi是客户端缓存,
/** 客户端数据缓存 */
public class ClientDataBuffer
{
public static String currentUser; /** 当前客户端的用户信息 */
public static String onlineUsers;/** 在线用户列表 */
public static Socket clientSocket;/** 当前客户端连接到服务器的套节字 */
public static ObjectOutputStream oos;/** 当前客户端连接到服务器的输出流 */
public static ObjectInputStream ois;/** 当前客户端连接到服务器的输入流 */
public static Properties configProp;/** 服务器配置参数属性集 */
//public static Dimension screenSize;/** 当前客户端的屏幕尺寸 */
public static String ip ;/** 本客户端的IP地址 */
public static final int RECEIVE_FILE_PORT = 6666;/** 用来接收文件的端口 */
static{
//screenSize = Toolkit.getDefaultToolkit().getScreenSize();
configProp = new Properties();//加载服务器配置文件
try {
ip = InetAddress.getLocalHost().getHostAddress();
configProp.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("serverconfig.properties"));
} catch (IOException e) {e.printStackTrace();}
}
private ClientDataBuffer(){
clientSocket = new Socket();
}
}
LZ可否提供错误日志应该是oos这个静态成员变量初始化的地方有问题,楼主可否查看一下相应的代码
我就是确定不了到底哪个为空,所以才解决不了这个问题的。
这是错误日志:
11-13 08:29:26.107: ERROR/AndroidRuntime(374): java.lang.NullPointerException
11-13 08:29:26.107: ERROR/AndroidRuntime(374): at com.Client.ClientUtil.sendTextRequest(ClientUtil.java:17)
11-13 08:29:26.107: ERROR/AndroidRuntime(374): at com.Client.LoginActivity$2.onClick(LoginActivity.java:88)
11-13 08:29:26.107: ERROR/AndroidRuntime(374): at android.view.View.performClick(View.java:2485)
11-13 08:29:26.107: ERROR/AndroidRuntime(374): at android.view.View$PerformClick.run(View.java:9080)
11-13 08:29:26.107: ERROR/AndroidRuntime(374): at android.os.Handler.handleCallback(Handler.java:587)
11-13 08:29:26.107: ERROR/AndroidRuntime(374): at android.os.Handler.dispatchMessage(Handler.java:92)
11-13 08:29:26.107: ERROR/AndroidRuntime(374): at android.os.Looper.loop(Looper.java:123)
11-13 08:29:26.107: ERROR/AndroidRuntime(374): at android.app.ActivityThread.main(ActivityThread.java:3683)
11-13 08:29:26.107: ERROR/AndroidRuntime(374): at java.lang.reflect.Method.invokeNative(Native Method)
11-13 08:29:26.107: ERROR/AndroidRuntime(374): at java.lang.reflect.Method.invoke(Method.java:507)
11-13 08:29:26.107: ERROR/AndroidRuntime(374): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
11-13 08:29:26.107: ERROR/AndroidRuntime(374): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
11-13 08:29:26.107: ERROR/AndroidRuntime(374): at dalvik.system.NativeStart.main(Native Method)
System.out.println(request.getAttribute("id"));//有值
System.out.println(request.getAttribute("pwdFld"));//有值
System.out.println(ClientDataBuffer.oos);//为空
这些都是我打印的,在出现异常的那句话中ClientDataBuffer.oos.writeObject(request);
我已经把能打印的都打印了,从结果来看,肯定是ClientDataBuffer.oos.出现的异常,所以我就在试了一下:
ObjectOutputStream oos;
oos.writeObject(request);结果还是为空,所以我判断不是oos出现的空指针异常,那么就只剩下ClientDataBuffer了,上面我已经吧ClientDataBuffer.java的代码贴出来了,我实在看不出里面有什么问题,
ClientDataBuffer不能打印,
System.out.println(ClientDataBuffer)会显示错误
没找到这段代码里面有赋值给oos的代码,查下serverconfig.properties里面吧
哪位给个初始化例子啊????