java项目打包后,无法显示图片或无法读取文件问题解决方案
在项目中使用到了图片,可以将图片放在src文件夹的外部,也可以将图片放在src文件夹的内部.
1.图片放在src文件夹外部的,在.jar文件同级目录下,放入图片所在的文件夹,即可解决图片无法显示的问题.
2.图片放在src文件夹内部的,
首先在build成.jar文件或者通过eclipse export成.jar文件时,配置
一个ant的build.xml文件,在这
一块里面,将image文件夹COPY进class文件的文件夹(这一块的写法请参考ANT脚本的写法).这样即可将图片build进.jar文件
然后,用以下方法处理图片,即可保证图片能够正常显示.
ClassLoader cl =this.getClass().getClassLoader();
URL iconURL = cl.getResource("com/hadeslee/yoyoplayer/pic/player/icon.png");
InputStream is = cl.getResourceAsStream("com/hadeslee/yoyoplayer/pic/player/icon.png");
if(iconURL !=null) {
//注意,被打包进jar文件的资源,是不能通过路径来读取的
//需要读取该资源时,可以通过URL和InputStream来进行,具体使用如下
ImageIcon jlguiIcon = new ImageIcon(iconURL);
ImageLoader imageloader = new ImageLoader();
ImageData[] imageDatas = loader.load(is);
setIconImage(jlguiIcon.getImage());
config.setIconParent(jlguiIcon);
}
之前使用图片,比如用放在image里的图片1.jpg,一直都是用ImageIcon imp = new ImageIcon("image/1.jpg"),结果把类与资源图片打包成一个jar包后,图片总是不能显示,只有使image与jar包在同一目录下才能正常显示图片,原因是,当打包成jar后,image/1.jpg就是在.jar文件里面,对于操作系统来说,是不能将一个文件当成一个目录来继续生成路径的.。现在通过使用URL类,即可保证程序图片的正确显示.如果资源被打包进JAR文件,则不能通过路径来获取文件,如果需要操作文件,可以使用URL或者InputStream来进行.
其实不仅仅是图片,打包成.jar文件后,那些被打包进.jar文件的资源都不能正常访问.关于这一部分内容,请阅读【解惑】深入jar包:从jar包中读取资源文件[url]http://www.iteye.com/topic/483115[/url]
MyEclipse 导出 runable Jar 再导出exe 文件:
参考群文件↑
网友评论