2013-11-03 47 views
0

我正在製作一個JPanel顯示在我的eclipse工作區中。我有以下代碼:如何將圖像作爲類加載到相同的包中?

BufferedImage img = null; 
try { 
    img = ImageIO.read(new File("anno.png")); 
} catch (IOException e) {System.out.println(e);} 

而且在同一個包中的類,這是在文件「anno.png」然而,當我運行這個它總是顯示此消息:

javax.imageio.IIOException: Can't read input file! 

我在做什麼錯?

回答

1

你不是在正確的地方看。 Java在基於用戶目錄而不是類目錄的目錄中查找文件。

解決方案:

  • 使用的資源,而不是文件。資源目錄基於類目錄。
  • 或找出用戶目錄是什麼,但在嘗試讀取圖像之前打印文件絕對路徑。

我喜歡前者:使用資源,而不是文件。即,可以不使用File通常由訪問getClass().getResourceAsStream("anno.png");

BufferedImage img = null; 
try { 
    img = ImageIO.read(getClass().getResourceAsStream("anno.png")); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
3

甲嵌入資源(一個的Jar或應用程序上下文中哪些reisdes)。相反,你需要讓我們的類加載器的使用做

的Try ...

img = ImageIO.read(getClass().getResource("anno.png")); 

如果還是不行,請嘗試使用...

img = ImageIO.read(getClass().getResource("/path/to/anno.png")); 

相反

相關問題