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();
}
}
} 展开
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();
}
}
} 展开
4个回答
展开全部
参考答案:
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一个方法对同一属性处理 不应由两个try处理。该处理不符合java语言设计规范。
应为一个try处理
应为一个try处理
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
adfa dfwef aef aef afaf
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
"at 第一题.MessageOut(Test2.java:42)"
是你Test2.java文件的42行有问题,应该是写入的问题,执行writeUTF方法时出错,
“dataout.writeUTF(Number);
dataout.writeUTF(Name);”
应该是Number或者Name这两个参数有问题吧
是你Test2.java文件的42行有问题,应该是写入的问题,执行writeUTF方法时出错,
“dataout.writeUTF(Number);
dataout.writeUTF(Name);”
应该是Number或者Name这两个参数有问题吧
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询