Exception in thread "Thread-0" java.lang.NullPointerException

时间:2023-01-27 16:19:37

Exception in thread "Thread-0" java.lang.NullPointerException

2014-01-15 09:59 ljh404  |  浏览 3082 次
package server;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import publiClass.Datas;
import publiClass.SysConstants;
import publiClass.Tools;
//启动线程
public class Serveryancheng extends Thread{
      public static void main(String[] args) {
              //启动服务线程
              System.out.println("服务器启动成功");
              new Serveryancheng().start();   }
      public void run(){
              //服务器socket初始化
              ServerSocket serversocket = null;
              Socket socket =null;
              ObjectOutputStream oos = null;
              ObjectInputStream ois= null;
              try {
            	  serversocket =new  ServerSocket(Integer.parseInt(Tools.getVlaue(SysConstants.SYS_LISTENERPORT)));
                      //设置死循环,设置监听
                      while(true){......此处省略很多字......}
              } catch (NumberFormatException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
              } catch (IOException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
              } catch (ClassNotFoundException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();     }
              finally {
                      try {
                              //关闭流
                              oos.close();
                              ois.close();
                              socket.close();
                      } catch (IOException e) {
                              // TODO Auto-generated catch block
                              e.printStackTrace();      }           }
              System.out.println("服务器终止");     //处理客户端发送的请求方法    //向客户端发送响应
              }
}
SysConstants.SYS_LISTENERPORT为监听端口。
       Tools.getVlaue为取出.properties表中的与SysConstants.SYS_LISTENERPORT对应的port值。
       Integer.parseInt
运行ServerSocket(Integer.parseInt(Tools.getVlaue(SysConstants.SYS_LISTENERPORT)));之后就出现错误:
服务器启动成功
Exception in thread "Thread-0" java.lang.NullPointerException
	at server.Serveryancheng.run(Serveryancheng.java:75)
2014-01-15 10:03 提问者采纳
空指针异常
追问:
恩,我也知道是空指针异常,但是就是不知道为什么会异常。
追答:
抱歉,刚开始没有看全,错误提示75行,如果你注释掉75看可以吗?
追问:
恩,不行哦!
追答:
不可以?又报的什么错误啊
追问:
错误往下走到} catch (IOException e) {
追答:
serversocket =new  ServerSocket(Integer.parseInt(Tools.getVlaue(SysConstants.SYS_LISTENERPORT)));这里获得服务器的端口号没啊,打印下看看
追问:
怎么说呢,我在这句代码前打点,这个时候是看不到的,但是我再往下的时候程序跳进了properties.class中,而SysConstants.SYS_LISTENERPORT这个对应的port的取值在sys.properties中。
追答:
哦,你说你的程序是在运行ServerSocket(Integer.parseInt(Tools.getVlaue(SysConstants.SYS_LISTENERPORT)));之后就出现错误的,那么你要确定是否取到端口号的值了,如果有值,你说然后程序跳进了properties.class中,那你要确定properties.class这里面有没有错
追问:
哦,可properties.class不是底层类来的么?
追答:
啊哦,那你就确定你是否获得端口号了没啊,建议你可以先不加断点,直接打印下,看看有没有值
追问:
昨天我调试的时候是可以用的,程序都可以走,今天打开电脑的时候就用不了了,无语得!我研究下
提问者评价
不管怎么样虽然没解决,但是还是非常感谢你!我自己再研究下
评论(1)  |  2  0

为您推荐:

按默认排序 | 按时间排序

其他4条回答

2014-01-15 10:08 0987plm  | 五级
检查下Serveryancheng.java 的75行 的每个取值的对象,空指针异常,最好能debug看下
评论  |  0  0
2014-01-15 10:06 allen_mo  | 四级
你去75行.肯定有一个null值.处理这个就行了
追问:
75行就是这个东西,oos.close();
在这个程序里有两个main()方法,一个是线程的,另一个是主界面的!
评论  |  0  0
2014-01-15 10:12 jxcome2010  | 六级
75行是什么?那里错了
追问:
75行就是这个东西,oos.close();在这个程序里有两个main()方法,一个是线程的,另一个是主界面的!
追答:
oos没初始化?new一个先
追问:
上面有个:
             ObjectOutputStream oos = null;              ObjectInputStream ois= null;
我不知道这么写对不对,我也很有疑问。
追答:
oos = new ObjectOutputStream(socket.getOutputStream());
追问:
额...报错了!
加进去后是:
ois cannot be resolved to avariable
oos cannot be resolved to a variable
追答:
里面,前面的代码保持不变。
放在while(true){
socket=serversocket,accecpt();
oos = new ObjectOutputStream(socket.getOutputStream())
追问:
不明白!
评论  |  0  0
2014-01-15 10:07 k9876765  | 四级
port值是否为空了?
追问:
不为空,我在.properties文件里面给port赋了一个端口值