请问java.io.EOFException如何解决?

postgraduatetw 2012-11-28 02:19:59
我在运行程序时,出现如下错误提示,请问如何解决?谢谢!

java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(Unknown Source)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(Unknown Source)
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at com.bj.client.Client.read(Client.java:118)
at com.bj.client.Client.send(Client.java:92)
at com.bj.client.view.UserView.login(UserView.java:76)
at com.bj.client.view.UserView.start(UserView.java:39)
at com.bj.client.view.StartMain.main(StartMain.java:13)

相关代码如下,read()方法是将对象流中的内容读入出,并封装到Command实例中,其中错误是在第8行产生的“in=new ObjectInputStream(client.getInputStream());”,client是Socket实例。

 public Command<?> read()
{
Command<?> cmd=null;
ObjectInputStream in = null;

try {

in=new ObjectInputStream(client.getInputStream());
cmd=(Command<?>)in.readObject();
return cmd;
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
finally
{
if(in!=null)
{
try {
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}
...全文
30191 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
日知己所无 2015-03-13
  • 打赏
  • 举报
回复
引用 5 楼 u012751110 的回复:
怎么解决的,我也遇到类似的问题了
http://lavasoft.blog.51cto.com/62575/235269 上面有解决办法了
sunny冰青 2015-03-12
  • 打赏
  • 举报
回复
怎么解决的,我也遇到类似的问题了
Always_Debug 2012-11-28
  • 打赏
  • 举报
回复 1
EOFException是当输入过程中意外到达文件或流的末尾时,抛出此异常。因为你是使用的ObjectInputStream,导致你出现这个异常的可能是这个流已经读过一次了,不能再读了,对象流只能被读取一次,猜测你多次调用这个方法.如果你是想从输入流中读取多个对象,你可以把对象放在集合里或者放在对象的数组中.然后通过输入流写入.
wonkju 2012-11-28
  • 打赏
  • 举报
回复
之前我第一次学 IO的时候,也常遇到这样的异常,对IO 研究不深,我帮你搜了一下: http://lavasoft.blog.51cto.com/62575/235269

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧