Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
线程“AWT-EventQueue-0”java.lang.IllegalArgumentException中出现异常:_Java - Fatal编程技术网

线程“AWT-EventQueue-0”java.lang.IllegalArgumentException中出现异常:

线程“AWT-EventQueue-0”java.lang.IllegalArgumentException中出现异常:,java,Java,我正在运行一个在这里找到的程序 我只是为它创建了一个Eclipse项目,并将其粘贴到一个新类中。程序代码假定您在某处有一个图片文件 private void loadImage() { try { this.image = GraphicsUtilities.loadCompatibleImage(getClass(). getResource("A.jpg")); this.image = GraphicsUtilitie

我正在运行一个在这里找到的程序 我只是为它创建了一个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.getResourceA.jpg告诉JVM在当前类的类加载器的类路径上查找文件A.jpg somwhere

这解释了为什么在将其放入bin文件夹时它会工作,因为默认情况下它位于eclipse的类路径上。您还可以将其放在源文件夹中,因为eclipse在构建时应该将其复制到bin文件夹中


要使用另一个文件夹,可以右键单击eclipse项目,选择Build Path->Configure Build Path,然后在Libraries选项卡上使用Add Class Folder或Add External Class Folder将包含图像的文件夹添加到项目的类路径。

是否验证了getClass.getResourceA.jpg返回的路径与放置.jpg的路径相同?嗯,如果我将其放置在bin文件夹中,它似乎可以工作,编译.class文件的地方。但是其他路径都不起作用,这确实让我很烦恼。本机如何验证?@user1507316您是否尝试了相对路径或者基本路径是您的“bin”文件夹?尝试URL=getClass.getResources/getResources/test.txt;字符串路径=url.toString;文件f=新文件路径;System.out.printlnf.getAbsolutePath;查看路径是否与文件系统中的路径相同