2015-05-09 78 views
0

我在我的程序中有幾個像下面使用的圖像。我決定將我的所有圖像移動到單獨的圖像類,以保持我的程序整潔,但現在我遇到了未處理的IOException錯誤。如何讓其他類可以全局訪問圖像?

通過編碼Images.fileName我能夠引用File,但它要求的文件是static,當我將其更改爲static,我遇到一個IOException

final BufferedImage identity = ImageIO.read(new File("Images/Identity.jpg")); 

我有幾十個String變量,可以很容易地從其他類訪問。沒有任何問題,我甚至不必以className.varName開頭。

有沒有辦法解決這個問題?或者最好是更好的方式來做到這一點?

+0

可否請您發佈有關IOException的堆棧跟蹤? – Parth

+0

我該怎麼做? – NemoLKLK

+0

編輯你的問題並追加你的堆棧跟蹤 – Parth

回答

1

JB Nizet在他們的評論說的是完全正確的:

你處理的方式是錯誤的問題。你的問題有 與圖像無關。你的問題是,你不明白 與未處理的異常有關的編譯器錯誤消息。因此,請閱讀 錯誤消息,嘗試理解它,Google它,閱讀關於Java (docs.oracle.com/javase/tutorial/essential/exceptions)中的例外的教程 ,並修復您的 代碼。而且,如果你真的陷入困境,那麼發佈不包含 的代碼以及完整的確切錯誤消息。但 教程應該讓你明白爲什麼你的代碼不能編譯

你的問題在於這樣的事實,你急切地初始化你的領域卻一無所獲,但可能導致IOException異常之內。此問題的修復相當簡單:使用靜態初始化塊:使用靜態初始化塊:

public class MyImages { 
    public static final BufferedImage identity; 

    static { 
     try { 
      identity = ImageIO.read(new File("Images/Identity.jpg")); 
     } catch (IOException e) { 
      // couldn't read the image... 
      // do something about it or stop the program or whatever 
     } 
    } 
    // the other stuff of your class 
} 
相關問題