带有ImageIO的Java未知源代码

带有ImageIO的Java未知源代码,java,png,embedded-resource,javax.imageio,Java,Png,Embedded Resource,Javax.imageio,我的程序在Netbeans中运行良好,但在浏览器中运行小程序时出现以下错误: java.lang.IllegalArgumentException: input == null! at javax.imageio.ImageIO.read(Unknown Source) 我打开jar以验证png文件是否正确放置在那里。我不确定为什么以下内容不起作用(当然是在try块中): 我尝试过下面这样的其他方法,但怀疑问题可能是其他原因 URL url = this.getClass().getR

我的程序在Netbeans中运行良好,但在浏览器中运行小程序时出现以下错误:

java.lang.IllegalArgumentException: input == null!
    at javax.imageio.ImageIO.read(Unknown Source)
我打开jar以验证png文件是否正确放置在那里。我不确定为什么以下内容不起作用(当然是在try块中):

我尝试过下面这样的其他方法,但怀疑问题可能是其他原因

URL url = this.getClass().getResource("images/beam.png");
BufferedImage beam = ImageIO.read(url.openStream());

非常感谢您的建议。

问题出在您的路径字符串中。改用这个:

BufferedImage beam = ImageIO.read(this.getClass().getResource("/images/beam.png"));

(注意路径前面的
/

问题在于路径字符串。改用这个:

BufferedImage beam = ImageIO.read(this.getClass().getResource("/images/beam.png"));

(注意路径前面的
/

用于记录,如果有人由于某种原因被此类错误绊倒,eclipse会自动更改生成路径并阻止打包映像路径


要更改此设置,只需右键单击项目名称->
属性
->
Java构建路径
->
源选项卡
,并检查包含图像的文件夹是否未被排除,如果只是删除该规则。

用于记录,如果某人由于某种原因被此类错误绊倒,eclipse会自动更改生成路径并阻止打包映像路径


要更改此设置,只需右键单击项目名称->
属性
->
Java构建路径
->
源选项卡
,并检查包含图像的文件夹是否未被排除,如果只是删除该规则。

URL URL=this.getClass().getResource(“images/beam.png”)图像位于调用类的包的子目录中?要从类路径的根创建该路径,请将其设置为
URL=this.getClass().getResource(“/images/beam.png”)
并确保打印出URL或在调试器中检查它。现在你似乎在猜测。你能解释一下你是如何构造JAR文件的,类和图像放在哪里的吗?可能有助于触发一些想法。myJar.jar与lib位于同一目录中。jar有目录mypackage和META-INF。mypackage目录有类文件和目录映像。images目录包含png文件。我认为路径“images/beam.png”是相对于类文件的。很抱歉,我的响应被延迟了。我正在和进出我办公室的人一起处理这个问题。如果你想让别人知道你的评论,请添加@PersonName。
URL=this.getClass().getResource(“images/beam.png”)图像位于调用类的包的子目录中?要从类路径的根创建该路径,请将其设置为
URL=this.getClass().getResource(“/images/beam.png”)
并确保打印出URL或在调试器中检查它。现在你似乎在猜测。你能解释一下你是如何构造JAR文件的,类和图像放在哪里的吗?可能有助于触发一些想法。myJar.jar与lib位于同一目录中。jar有目录mypackage和META-INF。mypackage目录有类文件和目录映像。images目录包含png文件。我认为路径“images/beam.png”是相对于类文件的。很抱歉,我的响应被延迟了。我正在处理这个问题,有人进出我的办公室。如果你想让别人知道你的评论,请添加@PersonName。将路径更改为“/images/beam.png”并不能解决这个问题。那么你的
beam.png
文件在你的JAR中在哪里?您必须使用完整路径。NetBeans要构建一个在浏览器中工作的jar,映像目录必须在src目录中,而不是包目录中,然后在路径工作之前使用“/”:/images/beam.png。将路径更改为“/images/beam.png”并不能解决问题。那么您的
beam.png
文件在jar中的什么位置?您必须使用完整路径。要让NetBeans构建一个在浏览器中工作的jar,映像目录必须位于src目录而不是包目录中,然后在路径工作之前使用“/”:“/images/beam.png”。