【问题标题】:Accessing resources after extracting into a .jar. Works in eclipse but not after extracting提取到 .jar 后访问资源。在eclipse中工作,但在提取后不工作
【发布时间】:2016-08-05 03:38:13
【问题描述】:

所以我正在开发一款游戏,更重要的是通过做一些有趣的事情来更好地学习语言,并且在 eclipse 中一切正常。要在 Eclipse 中加载图像(纹理),我使用这一行。

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

在 Eclipse 中效果很好。 (http://imgur.com/ckEGEec)

但导出后,没有任何纹理出现。 (http://imgur.com/OOFCKUN)

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

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

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

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

【问题讨论】:

    标签: java eclipse jar resources


    【解决方案1】:

    当使用getResource() from Class 时,如果路径没有以“/”为前缀,则路径应该是相对于类的。但是,如果您确实在路径前加上“/”,则表示从类路径的根目录中查找资源,这可能是您要查找的资源。

    【讨论】:

    • 对不起,如果我遗漏了什么,但是,据我所知,你是说如果我把 / 放在那里它应该修复它,对吗?如果是这样,我尝试了this.image = ImageIO.read(this.getClass().getResource("/resources/textures/"+fileName + ".png"));,但我仍然遇到同样的问题。好吧,不是同一个问题,这是一个不同的问题。它给了我一个编译错误。 Exception in thread "Thread-2" java.lang.IllegalArgumentException: input == null! at javax.imageio.ImageIO.read(Unknown Source) at me.mbektic.game.Texture.<init>(Texture.java:29)
    • 您尝试将图像加载到 jar 中吗?如果它们没有作为资源捆绑在您的 jar 中,这将解释为什么当您使用相对于您的工作目录 ("./") 的路径时在 eclipse 中找到它们时在类路径中找不到它们
    • 是的,我已经确定了这一点。 i.imgur.com/aHtvg80.png 有一张 .jar 内部的图片。抱歉回复晚了,我从昨天起就没有上过电脑了。
    • 您的图片证明您的 jar 中有一个resources 文件夹,但不能证明您尝试访问的文件确实在 /resources/textures/ 文件夹中...
    • 在再次阅读getResource 的文档之后,我相信我做了一个错误的假设,即以“/”开头的路径表示来自类类加载器根目录的路径,而不是来自根目录的路径的文件系统。你能试试this.image = ImageIO.read(this.getClass().getClassLoader().getResource("resources/textures/"+fileName + ".png"));吗?如果可行,我将相应地编辑我的答案。
    猜你喜欢
    • 2017-06-07
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 2014-02-01
    相关资源
    最近更新 更多