2013-11-15 49 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()的定義, –

相關問題