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

一天解决不了的空指针错误(求解java)程序如下

2013-09-11 
一天解决不了的空指针异常(求解java)程序如下客户端运行结果:Exception in thread main java.lang.NullP

一天解决不了的空指针异常(求解java)程序如下
客户端运行结果:
Exception in thread "main" java.lang.NullPointerException
at cn.com.client1.Client.closeSocket(Client.java:50)
at cn.com.client1.Client.doLogin(Client.java:76)
at cn.com.client1.ClientScream.createLoginView(ClientScream.java:37)
at cn.com.client1.ClientScream.main(ClientScream.java:24)

服务器端运行结果:
Exception in thread "Thread-0" java.lang.NullPointerException
at cn.com.serverSocket1.Server_Socket.run(Server_Socket.java:86)


[code=Java][/code]截图如下

客户端 界面代码:

package cn.com.client1;

import java.util.Scanner;

import cn.com.entity1.Cashier;
import cn.com.entity1.StoreMgr;
import cn.com.util1.Goods;
import cn.com.util1.SysConstants;
  /*
  * 客户端界面类
  */
public class ClientScream {
//控制台输入对象
  private static Scanner scanner =new Scanner(System.in);
  //客户端业务对象
  private static Client client=new Client(); 
  public static void main(String[] args) {
  System.out.println("*********欢迎使用青鸟超市管理系统**********");
System.out.println("1.登录\n2.退出系统");
System.out.println("************请选择数字1/2*************");
int num=scanner.nextInt();
if (num==1) {
//调用登录视图
createLoginView();
}
System.out.println("系统终止运行");
}  


  public static void createLoginView(){
  while (true) {
  System.out.println("用户名称:");
  String username=scanner.next();
System.out.println("用户密码:");
String password=scanner.next();
//调用登录服务业务 且向服务器端发送请求
Goods goods=client.doLogin(username,password);
System.out.println("客户端向服务器端发送请求成功!");
//服务器回复了请求
if (SysConstants.SYS_SUCCESS.equals(goods.getFlag())) {
//正确返回数据
System.out.println("服务器端回复客户端,响应成功!\n客户端开始操作......");  
//调用学员管理视图
// createCommodifyManagerView(goods.getStoremgr());
break;
}else {
//出错,继续登录
System.out.println("用户名或者密码输入错误!登录失败!");
}
}
 
  }
}


服务器端 代码:

package cn.com.serverSocket1;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;

import cn.com.entity1.StoreMgr;
import cn.com.util1.Goods;
import cn.com.util1.SysConstants;
import cn.com.util1.Tools;

/*
  服务器端的线程类
  */  
public class Server_Socket extends Thread {

public static void main(String[] args) {

//线程子类的对象的启动
new Server_Socket().start();
}
//重写run方法
public void run() {
System.out.println("服务器启动!");
ServerSocket serverSocket=null;
ObjectOutputStream objectOutputStream=null;
ObjectInputStream objectInputStream = null;
Socket socket =null;
   
  //创建Server_Socket对象,绑定一个端口
try {
serverSocket=new ServerSocket(Integer.parseInt(Tools.getValue(SysConstants.SYS_LISTENERPORT)));
//对socket对象,接受accept();
while(true){  
socket=serverSocket.accept();
//对建立输入输出流 且实例化(对对象进行 序列化和反序列化)
objectOutputStream=new ObjectOutputStream(socket.getOutputStream());  
objectInputStream =new ObjectInputStream(socket.getInputStream());//由服务器端开始
//在协议上进行读 取
//读 接受请求
 
System.out.println("服务器端接受客户端请求成功!");


 
Goods goods=(Goods)objectInputStream.readObject();
//取 回复请求 
 
System.out.println("服务器端开始处理并回复请求!");
 
//创建服务器业务对象,区分服务业务
ServerService serverService=new ServerService();  
if(SysConstants.SYS_LOGIN.equals(goods.getFlag())){
//回复登录请求
String username=goods.getStoremgr().getUsername();
String password=goods.getStoremgr().getPassword();
StoreMgr storemgr=serverService.doLogin(username,password);
//判断调用服务器端服务业务方法是否正确
if (storemgr==null) {
//登录失败
goods.setFlag(SysConstants.SYS_ERROR);
}else {
//登录成功

System.out.println("服务器端正在给客户端传送数据!");

goods.setStoremgr(storemgr);//返回给setStoremgr
goods.setFlag(SysConstants.SYS_SUCCESS);
}

}else {
goods.setFlag(SysConstants.SYS_SUCCESS); 
}
objectOutputStream.writeObject(goods);
objectOutputStream.flush();
socket.shutdownOutput();


}
//关闭流以及socket对象
 
} catch (Exception e) {
e.printStackTrace();
}finally{ 
try {
  objectInputStream.close();
objectOutputStream.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}  
System.out.println("服务器终止");
}
}



[解决办法]
我没看到你的Client类代码啊,
你定位到具体哪一行代码,
空指针异常还是比较好解决的。。。
[解决办法]

at cn.com.client1.Client.doLogin里的
at cn.com.client1.Client.closeSocket方法的问题
Scoket关闭的时候,是不是没有做判断?
我的异常网推荐解决方案:程序员的一天,http://www.myexception.cn/other/1391144.html

热点排行