簡體   English   中英

線程“ AWT-EventQueue-0”中的異常java.lang.IllegalArgumentException:

[英]Exception in thread “AWT-EventQueue-0” java.lang.IllegalArgumentException:

我試圖運行在這里找到的程序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)

無論我將圖像放在何處或編寫路徑,都可以得到。 我究竟做錯了什么? 我認為程序已經過良好的測試,可以直接使用...

getClass().getResource("A.jpg")告訴JVM在當前類的類加載器的類路徑上查找文件A.jpg

這就解釋了為什么將其放入bin文件夾時可以工作的原因,因為默認情況下它位於eclipse的類路徑中。 您也可以將其放在源文件夾中,因為在構建時,eclipse應該將其復制到bin文件夾中。

要使用另一個文件夾,可以右鍵單擊eclipse-project,選擇Build Path Path-> Configure Build Path然后在Libraries -tab中使用Add Class FolderAdd External Class Folder將包含圖像的文件Add External Class Folder添加到項目的classpath。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM