2013-11-15 50 views
2

我刚刚在Java中创建了我的第一个基于I/O的东西。 我想检查写入文件的内容是否正确保存或不保存。 为此我写了下面的代码..java FileInputStream和FileOutputStream的错误

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) 

任何人有任何想法来解决这个问题?

+1

不要在编译错误时尝试运行代码。打开Eclipse的“Problems”视图,并在尝试运行代码之前修复列出的所有编译错误。你正在做的就像试图驾驶一辆没有车轮的汽车。 –

回答

0

即使您缺少一些类或者尽管存在编译错误,您的IDE仍可让您运行一些代码。在运行之前修复编译错误。

+0

我无法修复编译错误..有关于此的任何帮助? –

+0

@JuzzCoding转到窗口 - >输出 - >输出。您应该看到错误并修复它们或按Ctrl + 4. –

+0

我可以直接进入窗口 - >输出(即Ctrl + 4),但这不会改变错误信息, –

0

您的代码此刻不可编译。第36行失败。

System.out.println("Variable, stored contains.." + stored.getType()); 

这是因为班级检查不包含方法getType()。也许你的意思是沿着getClass().getName()的路线?

修复此错误,然后重试。你自己的错误信息对我来说没有意义 - 它是由IDE生成的吗?

PS。关于类,变量等的命名,请看Java coding conventions。 :)

1

看看http://docs.oracle.com/javase/7/docs/api/java/io/ObjectInputStream.html#readObject()。该方法列出了几个例外。对于列出的所有异常,不是RuntimeException的子类,您需要捕获异常或声明该方法可以抛出异常。您只为IOException完成了此操作。您还需要为文档中列出的其他例外执行此操作。这需要为所有抛出非运行时异常的方法完成。

+0

这不是真的问题.. :( –

+0

@JuzzCoding然后我不知道在这种情况下可以做些什么,我是按照你的错误信息说的,我找不到任何会导致错误信息的东西,也许你需要在这里提供更多细节 –

+0

nvm,现在已经解决了..它实际上找不到函数getType()的定义, –

相关问题