我刚刚用Java制作了我的第一个基于I / O的东西。 我想检查写入文件的内容是否正确保存。 为此,我写了以下代码..
import java.io.*;
public class check implements Serializable {
//Make two variables and methods to initialise them
private int height;
private int width;
public void setWidth(int w){
width = w;
}
public void setHeight(int h){
height = h;
}
public static void main(String[] args) {
check obj = new check();
obj.setHeight(20);
obj.setWidth(30);
try{
FileOutputStream fs = new FileOutputStream("foo.txt");
ObjectOutputStream os = new ObjectOutputStream(fs);
os.writeObject(obj);
os.close();
}
catch(IOException ex){
}
//We set them to null so we can't access the objects on heap.
obj = null;
//Now we read them back from file
try{
ObjectInputStream is = new ObjectInputStream(new FileInputStream("foo.txt"));
check stored = (check) is.readObject();
//Check to see if it worked.
System.out.println("Variable, stored contains.." + stored.getType());
}
catch(IOException ex){
}
}
}
但它会产生以下错误。
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - unreported exception java.lang.ClassNotFoundException; must be caught or declared to be thrown
at check.Check.main(Check.java:33)
有人有任何想法解决这个问题吗?
答案 0 :(得分:1)
看看http://docs.oracle.com/javase/7/docs/api/java/io/ObjectInputStream.html#readObject()。该方法列出了几个例外。对于列出的每个不是RuntimeException
子类的异常,您需要捕获异常或声明该方法可以抛出该异常。您只对IOException
执行了此操作。您还需要为文档中列出的其他例外执行此操作。这需要针对抛出非运行时异常的所有方法完成。
答案 1 :(得分:0)
即使您缺少某些类或编译错误,您的IDE也会让您运行一些代码。在运行之前修复编译错误。
答案 2 :(得分:0)
您的代码目前无法编译。第36行失败。
System.out.println("Variable, stored contains.." + stored.getType());
这是因为类检查不包含方法getType()
。也许你的意思是getClass().getName()
?
修复此错误,然后重试。您自己的错误消息对我没有意义 - 它是由IDE生成的吗?
PS。关于类,变量等的命名,请查看Java coding conventions。 :)