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