Java 关于java.io.IOException: 句柄无效。

问题出在这voidMessageOut(){try{System.out.print("Number:");Number=buf.readLine();System.ou... 问题出在这void MessageOut(){
try {
System.out.print("Number:");
Number=buf.readLine();
System.out.print("Name:");
Name=buf.readLine();
System.out.print("English:");
English=Integer.parseInt(buf.readLine());
System.out.print("Computer:");
Computer=Integer.parseInt(buf.readLine());
} catch (IOException e) {
e.printStackTrace();
}
try {
dataout.writeUTF(Number);
dataout.writeUTF(Name);
dataout.writeInt(English);
dataout.writeInt(Computer);
dataout.close();
} catch (IOException e) {
e.printStackTrace();
}
}
异常如下:
java.io.IOException: 句柄无效。
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(Unknown Source)
at java.io.DataOutputStream.write(Unknown Source)
at java.io.DataOutputStream.writeUTF(Unknown Source)
at java.io.DataOutputStream.writeUTF(Unknown Source)
at 第一题.MessageOut(Test2.java:42)
at Test2.main(Test2.java:59)

本来我是把两个try代码块分开写入两个方法依次执行的,没异常,现在写进一个方法就有异常了?请高手帮看看,解释下。。谢谢
下面这样写就没异常
void MessageIn(){
try {
System.out.print("Number:");
Number=buf.readLine();
System.out.print("Name:");
Name=buf.readLine();
System.out.print("English:");
English=Integer.parseInt(buf.readLine());
System.out.print("Computer:");
Computer=Integer.parseInt(buf.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
void MessageOut(){
try {
dat.writeUTF(Number);
dat.writeUTF(Name);
dat.writeInt(English);
dat.writeInt(Computer);
} catch (IOException e) {
e.printStackTrace();
}
}
}
展开
 我来答
百度网友7dacf80a0
2012-05-14 · TA获得超过799个赞
知道小有建树答主
回答量:252
采纳率:100%
帮助的人:143万
展开全部
参考答案:
java.io.IOException: 句柄无效。
at java.io.FileInputStream.close0(Native Method)
at java.io.FileInputStream.close(Unknown Source)
at java.io.PushbackInputStream.close(Unknown Source)
at java.util.zip.InflaterInputStream.close(Unknown Source)
at java.util.zip.ZipInputStream.close(Unknown Source)
at org.apache.catalina.util.ExtensionValidator.getManifest(ExtensionValidator.java:375)
at org.apache.catalina.util.ExtensionValidator.validateApplication(ExtensionValidator.java:184)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4154)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)

此类异常和jdk的版有点关系.解决办法:

1.换个高版本的JDK.(未试过)

2.将tomcat的虚拟机(指向jre目录)指向JDK目录. 如:tomcat原来的虚拟机是指向:C:\Program Files\Java\jre1.6.0_02\bin\client\jvm.dll 则指向C:\Program Files\Java\jdk1.6.0_02\jre\bin\client\jvm.dll
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
robert__Yao
2012-05-14
知道答主
回答量:10
采纳率:0%
帮助的人:5.9万
展开全部
一个方法对同一属性处理 不应由两个try处理。该处理不符合java语言设计规范。
应为一个try处理
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
开心且素朴的小福祉4120
2012-05-14 · TA获得超过5.4万个赞
知道大有可为答主
回答量:2.8万
采纳率:0%
帮助的人:3697万
展开全部
adfa dfwef aef aef afaf
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友61d54e9
2012-05-14
知道答主
回答量:24
采纳率:0%
帮助的人:20.1万
展开全部
"at 第一题.MessageOut(Test2.java:42)"
是你Test2.java文件的42行有问题,应该是写入的问题,执行writeUTF方法时出错,
“dataout.writeUTF(Number);
dataout.writeUTF(Name);”
应该是Number或者Name这两个参数有问题吧
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式