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
本文探讨了Java服务器端编程中遇到的空指针异常问题,详细分析了异常出现的位置及可能的原因,并提供了逐步排查和解决该问题的方法。

4819

被折叠的 条评论
为什么被折叠?



