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改变了这一点。我也更改了代码段以及文件结构。