关于java程序打包的问题-这几天被它烦死了

woodyong 2004-07-28 11:59:15
前几天编个程序玩,其中用到一个图标(new.png);
涉及到的代码为:
。。。。。。。
(line332)imageNew = new ImageIcon(data_win.ConfigFrame.class.getResource("new.png"));
。。。。。。。
在JBuilder9下可编译通过并运行,无任何错误,但用JBuilder打包为ExecutableJAR后,用
> java -jar App.jar
运行时却老是出错,错误报告为
java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:138)
at data_win.ConfigFrame.jbInit(Frame1.java:332)
..........
但检查jar文件,发现new.png包含在相应的class目录中,
小弟一直不明白,有解惑者100分重谢!

...全文
232 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
woodyong 2004-07-30
  • 打赏
  • 举报
回复
调了老半天,还是不知道原因,看了help后,改了一下使用方式,将
new ImageIcon(data_win.ConfigFrame.class.getResource("new.png"));
改为
new ImageIcon("new.png");
一切ok,


registered 2004-07-29
  • 打赏
  • 举报
回复
你程序的 class (Frame1.java的) 文件在 jar 包的什么位置?
你这个 new.png 又在包里的什么位置?
必须根据图片在包内与你class文件的相对位置决定程序的语句应如何写
woodyong 2004-07-29
  • 打赏
  • 举报
回复
谢谢啦,但问题依旧!
registered 2004-07-29
  • 打赏
  • 举报
回复
data_win.ConfigFrame.class.getResource("new.png")
改成
this.getClass().getResource("new.png")
试试
woodyong 2004-07-29
  • 打赏
  • 举报
回复
改错了,那个Freme1应该是ConfigFrame,
自己先顶一个。
woodyong 2004-07-29
  • 打赏
  • 举报
回复
好,我试试,
casinosun 2004-07-29
  • 打赏
  • 举报
回复
用命令行试试,jcreator好像打包也有问题
registered 2004-07-29
  • 打赏
  • 举报
回复
你可以手动用 jar 命令打包试试
看看会不会出现问题
registered 2004-07-29
  • 打赏
  • 举报
回复
如果在同一个目录下
Frame1.class.getResource("new.png")
还不行的话那就推荐你升级 SDK 了
icon 用法详见:
http://java.sun.com/docs/books/tutorial/uiswing/misc/icon.html
里面有关于 URL 的说明
woodyong 2004-07-29
  • 打赏
  • 举报
回复
目录没错啊,Frame1.class 与 new.png在同一个目录下,所以直接用“new.png”。
registered 2004-07-29
  • 打赏
  • 举报
回复
准备睡觉了,给你留一个参考方案

包为 App.jar

假设 1:
new.png 在 App.jar 中的位置是 dir1/dir2/new.png
Frame1.class 在 App.jar 中的位置是 dir1/Frame1.class
语句为: Frame1.class.getResource("dir2/new.png")

假设 2:
new.png 在 App.jar 中的位置是 dir1/dir2/new.png
Frame1.class 在 App.jar 中的位置是 dir1/dir3/Frame1.class
语句为: Frame1.class.getResource("../dir2/new.png")
".."代表上级目录

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧