无法从Java中的同一包加载映像?

无法从Java中的同一包加载映像?,java,javax.imageio,Java,Javax.imageio,在我的java包中,我有一个名为“prog.ico”的文件。我正试图通过以下代码加载此文件: java.net.URL url = this.getClass().getResource("prog.ico"); java.awt.Image image = ImageIO.read( url ); System.out.println("image: " + image); 这将提供以下输出: image: null 我做错了什么?.ico文件与运行此代码的类位于同一个包中。似乎不支持.i

在我的java包中,我有一个名为“prog.ico”的文件。我正试图通过以下代码加载此文件:

java.net.URL url = this.getClass().getResource("prog.ico");
java.awt.Image image = ImageIO.read( url );
System.out.println("image: " + image);
这将提供以下输出:

image: null

我做错了什么?.ico文件与运行此代码的类位于同一个包中。

似乎不支持.ico图像格式。看看这个问题,它是解决这个问题的答案


为防止链接损坏:此解决方案建议使用来处理.ico文件。

我想您必须通过
FileInputStream
来包装文件

 File file = new File("prog.ico"); 
 FileInputStream fis = new FileInputStream(file);  
 BufferedImage image = ImageIO.read(fis); //reading the image file  

我已经为ImageIO编写了一个插件,它添加了对.ICO(MS Windows图标)和.CUR(MS Windows光标)格式的支持

您可以从GitHub获得它:


在你有了插件之后,你应该能够使用你原来帖子中的代码来阅读你的图标

file.exists()
的结果是什么?@turbo它给出false。但是该文件肯定存在于同一个包中,使用相同的名称(prog.ico)@turbo。我通过从相同的路径生成一个文件(通过获取
url.getPath()
)进行了检查,这也给出了错误。您是否尝试过绝对路径?我认为您是对的,这可能会有所帮助:正如我在评论中提到的,只需将文件更改为.jpg即可解决问题,因此我认为问题在于不支持.ico文件。