【问题标题】:How to load image using getResources() in Java JApplet?如何在 Java JApplet 中使用 getResources() 加载图像?
【发布时间】:2015-11-24 23:42:48
【问题描述】:

我正在尝试部署 Java 小程序。当我在 Eclipse 小程序查看器中运行它时,它可以正常加载(尽管它不响应键盘命令——这是稍后的问题)。将其导出到 JAR 并尝试在浏览器中运行后,它总是在其中一个类的这一行上给出 NullPointerException:

private static final ImageIcon NULL_IMAGE = new ImageIcon((new Object()).getClass().getResource("/tiles/blank.png"));

我尝试将这个类的第一次使用从 init() 转移到 start() 而没有改变。在终端窗口中运行“jar -tf applettest.jar”确认 /tiles/blank.png 确实存在于 JAR 中。 那么在导出这个 JAR 时我会错过什么?我应该忘记小程序版本并使用 JNLP 吗?

【问题讨论】:

  • “我应该忘记小程序版本并使用 JNLP 吗?” - 这通常是个好主意,但可能无法解决手头的问题。至于小程序不响应按键,这是KeyListener的通病,通过Key Bindings API解决了
  • 您是否尝试过使用new ImageIcon(YourClass.class.getResource("/tiles/blank.png"));
  • 使用 TheClass.class 似乎可以解决图像问题……或者至少,给我一个不同的错误,这一次说它无法连接到服务器数据库。关于关键问题,我使用的是键绑定,而不是 KeyListeners。我应该注意到有一个独立版本没有任何问题,至少在从 Eclipse 运行时。我想我会尝试使用 JNLP 进行部署。
  • 啊,好吧,我猜第二个问题与问题无关,但我建议这是一个与小程序安全限制严格的问题,猜测

标签: java swing jar embedded-resource japplet


【解决方案1】:

将您的 PNG 图像移动到与您的班级相同的包中,然后试试这个:

private final ImageIcon NULL_IMAGE = new ImageIcon(getClass().getResource("/blank.png"));`

请注意,NULL_IMAGE 变为 private final 而不是 private static final

【讨论】:

  • “将你的 PNG 图像移动到你的类所在的包中,然后试试这个:” 给定 / 前缀,只有当调用它的类是在默认包中。
猜你喜欢
  • 2011-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-06
  • 1970-01-01
  • 1970-01-01
  • 2015-07-09
  • 2013-09-23
相关资源
最近更新 更多