Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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 在解压缩到.jar后访问资源。在eclipse中工作,但在提取后不工作_Java_Eclipse_Jar_Resources - Fatal编程技术网

Java 在解压缩到.jar后访问资源。在eclipse中工作,但在提取后不工作

Java 在解压缩到.jar后访问资源。在eclipse中工作,但在提取后不工作,java,eclipse,jar,resources,Java,Eclipse,Jar,Resources,所以我正在做一个游戏,更重要的是通过做一些有趣的事情来更好地学习语言,在eclipse中一切都很好。要在eclipse中加载图像(纹理),我使用这行代码 this.image = ImageIO.read(new File("./resources/textures/" + fileName + ".png")); 在eclipse中工作得非常好。() 但导出后,并没有任何纹理显示出来。() 资源文件夹在.jar中,纹理在该文件夹中 我也厌倦了使用这行代码,但它不会在eclipse或.jar中

所以我正在做一个游戏,更重要的是通过做一些有趣的事情来更好地学习语言,在eclipse中一切都很好。要在eclipse中加载图像(纹理),我使用这行代码

this.image = ImageIO.read(new File("./resources/textures/" + fileName + ".png"));
在eclipse中工作得非常好。()

但导出后,并没有任何纹理显示出来。()

资源文件夹在.jar中,纹理在该文件夹中

我也厌倦了使用这行代码,但它不会在eclipse或.jar中加载纹理

this.image = ImageIO.read(this.getClass().getResource("resources/textures/"+fileName + ".png"));

感谢您的帮助,任何建议都会有帮助!如果你还需要什么。请让我知道。

使用时,如果路径前面没有“/”前缀,则路径应该是相对于类的。但是,如果在路径前面加“/”前缀,则表示要从类路径的根中查找资源,这可能就是您要查找的资源。

如果我遗漏了一些内容,很抱歉,但是,据我所知,您是说如果我将/放在那里,它应该会修复它,对吗?如果是这样,我尝试了
this.image=ImageIO.read(this.getClass().getResource(“/resources/textures/”+fileName+”.png”)和我仍然有相同的问题。这不是同一个问题,这是另一个问题。它给了我一个编译错误<代码>线程“thread-2”java.lang.IllegalArgumentException中的异常:输入==null!javax.imageio.imageio.read(未知源代码)me.mbektic.game.Texture.(Texture.java:29)
是您试图加载到jar中的图像吗?如果它们没有作为资源捆绑在您的jar中,这就解释了为什么当您使用相对于工作目录的路径(“./”)时,它们在类路径上找不到,而在eclipse中找到它们。是的,我已经确定了这一点。有一张.jar内部的图片。很抱歉回复得太晚,我从昨天起就没有在我的电脑上。你的照片证明你的jar中有一个
resources
文件夹,但不是你试图访问的文件确实在
/resources/textures/
文件夹中……在再次阅读
getResource
的文档之后,我认为我做了一个错误的假设,前面加“/”的路径意味着来自类加载器根的路径,而不是来自文件系统根的路径。你能试试this.image=ImageIO.read(this.getClass().getClassLoader().getResource(“资源/纹理/”+fileName+“.png”))?如果这有效,我将相应地编辑我的答案。