Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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
Java getResource,图像宽度返回-1_Java_Image_Jar_Load - Fatal编程技术网

Java getResource,图像宽度返回-1

Java getResource,图像宽度返回-1,java,image,jar,load,Java,Image,Jar,Load,我有以下加载图像的片段: String imgName = "/assets/" + name; URL imgURL = Groovy.class.getResource(imgName); System.out.println(imgURL.getPath()); Toolkit tk = Toolkit.getDefaultToolkit(); Image image = tk.getImage(imgURL); return

我有以下加载图像的片段:

    String imgName = "/assets/" + name;
    URL imgURL = Groovy.class.getResource(imgName);
            System.out.println(imgURL.getPath());
    Toolkit tk = Toolkit.getDefaultToolkit();
    Image image = tk.getImage(imgURL);
    return image;
以及绘制图像的位置:

        Graphics2D g = (Graphics2D) strategy.getDrawGraphics();
        g.setColor(Color.black);
        g.fillRect(0,0,screenWidth,screenHeight);
        g.drawImage(background, 0, 0, null);
        System.out.println(background.getWidth(null));
        if (background.getWidth(null) < 0)
            System.exit(1);
Graphics2D g=(Graphics2D)策略.getDrawGraphics();
g、 设置颜色(颜色为黑色);
g、 fillRect(0,0,屏幕宽度,屏幕高度);
g、 drawImage(背景,0,0,空);
System.out.println(background.getWidth(null));
if(background.getWidth(null)<0)
系统出口(1);
然而,imgURL总是返回null。我正在使用Eclipse(对它很熟悉,blegh),并使用run或debug选项运行这些类。如果我更改路径,则会出现“未找到文件”异常

文件结构如下:

Project->src和assets->src有Groovy,assets有image->Groovy有Groovy.class

编辑:我切换回Netbeans。imgURL现在加载良好,getPath返回正确的路径。但是,图像宽度/高度返回-1。这是现在的实际问题

编辑:-1表示宽度未知,但显示图像时显示白色屏幕。

请注意:

在委托之前,将根据 使用此算法的给定资源名称:

如果名称以“/”开头(“\u002f”),则资源的绝对名称是名称中“/”后面的部分。 否则,绝对名称的形式如下:

       modified_package_name/name
其中,修改后的_package_name是此对象的包名,用“/”替换“>”(“\u002e”)

简而言之:相对路径不能使用
升级。使用绝对名称(从类路径的根开始,以
/
开头)


此外,getResource从类路径加载资源。如果映像不在类路径中,它将无法工作。您的文件树一点也不清楚,但似乎您还不了解类路径是什么。如果要从文件系统加载文件,请使用文件IO,而不是资源。

问题在于使用工具箱获取映像,可能是因为我使用的是OpenJDK?无论如何,使用ImageIO.read(imgURL)解决了这个问题。

您能更清楚地说明类文件和图像的确切位置吗?也许在Eclipse的包资源管理器中发布这些家伙的图片。您更改了IDE,Java代码现在不起作用了?Java就是Java,IDE与您的问题无关。按照装满鳗鱼的气垫船的要求,发布一个文件夹和文件树的屏幕截图。因为它不是从罐子里运行的,所以可能有问题。从Eclipse切换到Netbeans改变了这一点。我也更改了代码段以及文件结构。