线程中的异常" AWT-EventQueue-0" java.lang.IllegalArgumentException异常:

时间:2014-07-09 13:05:30

标签: java

我正在尝试运行此处找到的程序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)

无论我在哪里放置图像或写路径,我都会得到这个。我究竟做错了什么?我认为该程序经过了充分测试,可以开箱即用......

1 个答案:

答案 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 FolderAdd External Class Folder将包含图片的文件夹添加到项目的类路径中。