【问题标题】:JAR won't work after adding images添加图像后 JAR 将无法工作
【发布时间】:2013-05-28 00:02:42
【问题描述】:

我编写了一个使用 PNG 的游戏,当我导出它时,图像无法正常工作。我将getClass().getClassLoader().getResource() 添加到我导入图像的所有位置,但JAR 甚至不再启动。它曾经打开,但没有一个图像工作。现在它甚至不会打开 JAR。

这就是我获取松饼图像的方式:
muffin=new ImageIcon(getClass().getClassLoader().getResource("muffin.png")).getImage(); 它的实际路径是:C:\Users\My User Name\Dropbox\FinalProjectWithoutApplet\muffin.png

我应该怎么做才能解决这个问题?

谢谢!

【问题讨论】:

  • 你的jar文件里有图片吗?请提取并检查。
  • 是的,他们是。 Screenshot
  • 从命令行运行你的jar,看看是否有抛出异常。
  • 你在那个 jar 文件中有 很多 真的不应该存在的东西。 Java 备份文件 (.java~) 和哎呀,开始的源代码。看起来你在 *class 文件上也有很多源代码控制冲突,这有点令人担忧。
  • 好的,NPE 表示您无法从资源中获取图像。这意味着您的图像不存在或不存在,或者您的路径错误。请发送您检索此图像的代码片段。继续你的问题:很难从评论中阅读代码。

标签: java jar png jcomponent


【解决方案1】:

getClass().getClassLoader().getResource("muffin.png") 正在寻找图像muffin.png在您的班级所在的同一目录中

我的意思是,如果您的班级名称是 com.mycompany.game.MyClass,则图像应该在 com/mycompany/game/muffin.png 中。如果这不是位置,请写入以/ 开头的绝对路径,例如/img/muffin.png

如果程序不工作,则从检查堆栈跟踪开始。

【讨论】:

  • 图片在源文件所在的目录下,你知道哪里出了问题吗?
  • 不,getClassLoader() 的使用意味着它将从 root 目录查找。如果只是Class.getResource,那将是真的。
  • 图像应该在类路径中,即类文件所在的位置。源代码根本不应该在 jar 文件中。
【解决方案2】:

我发现了问题。原来我的情况不匹配。 IDE 并不关心在代码中称为"muffin.png""Muffin.png"。我发现的另一个案例是"DoubleJumpIcon.png""DoubleJumpIcon.PNG"。事实证明,每一个案例都很重要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多