我正在尝试运行此处找到的程序http://www.java2s.com/Code/Java/Advanced-Graphics/UnsharpMaskDemo.htm 我只是为它创建了一个Eclipse项目,并将其粘贴到一个新类中。程序代码假定您有一个位于某处的图片文件
private void loadImage() {
try {
this.image = GraphicsUtilities.loadCompatibleImage(getClass().
getResource("A.jpg"));
this.image = GraphicsUtilities.createThumbnail(this.image, 300);
} catch (IOException ex) {
ex.printStackTrace();
}
}
我将其编辑为放置在src文件夹中的文件。奇怪的是,上面的例外并没有被抛出和抓住,无论我提供什么样的路径。相反,我在代码后面的某个方法中得到一个异常:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(Unknown Source)
at GraphicsUtilities.loadCompatibleImage(UnsharpMaskDemo.java:563)
at UnsharpMaskDemo.loadImage(UnsharpMaskDemo.java:216)
at UnsharpMaskDemo.<init>(UnsharpMaskDemo.java:99)
at UnsharpMaskDemo$5.run(UnsharpMaskDemo.java:229)
无论我在哪里放置图像或写路径,我都会得到这个。我究竟做错了什么?我认为该程序经过了充分测试,可以开箱即用......
答案 0 :(得分:0)
getClass().getResource("A.jpg")
告诉JVM在当前类的类加载器的类路径中查找文件A.jpg
somwhere。
这解释了为什么它在将它放在bin
文件夹中时有效,因为默认情况下这是在eclipse的类路径上。您也可以将它放在source-folder中,因为eclipse应该在构建时将其复制到bin
- 文件夹。
要使用另一个文件夹,您可以右键单击您的eclipse项目,选择Build Path
- &gt; Configure Build Path
并在Libraries
- 标签上使用Add Class Folder
或Add External Class Folder
将包含图片的文件夹添加到项目的类路径中。