2013-11-03 41 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")); 

相反

相关问题