在项目中使用到了图片,可以将图片放在src文件夹的外部,也可以将图片放在src文件夹的内部.
1.图片放在src文件夹外部的,在.jar文件同级目录下,放入图片所在的文件夹,即可解决图片无法显示的问题.
2.图片放在src文件夹内部的,
首先在build成.jar文件或者通过eclipse export成.jar文件时,配置
一个ant的build.xml文件,在<target name="jar" depends="compile">这
一块里面,将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包中读取资源文件
http://www.iteye.com/topic/483115
分享到:
相关推荐
解决Spring的java项目打包后执行出现“无法读取方案文档...“、“原因为 1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是...”问题...-附件资源
《java jdk 7学习笔记》是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习java时遇到的概念、操作、应用或认证考试等问题及解决方案。 《java jdk 7学习笔记》针对java se 7新功能全面改版,无论是...
本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...
今天小编就为大家分享一篇关于Springboot项目打war包docker包找不到resource下静态资源的解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
apache poi解析Excel时报错,我将Excel打开后保存,就不会报错,我将重写的类从新打包这样问题虽然网上有解决方案,但是需要自己打包重写对应类,我已将这些步骤做好了。
将每个产品目录下上传的所有图片及图片索引Index.xml打包成Jar文件,当从Web浏览器端访问时,直接读取这些Jar文件,大大降低网络传输的数据流量,从而减轻对带宽的依赖,解决了不具备IT实力的中小企业产品3D效果展示...
常见的 ASP.NET 2.0 转换问题和解决方案 Asp.Net2.0无刷新客户端回调 体验.net 2.0 的优雅(1) -- 异步WebService调用 ASP.NET 2.0页面框架的几点新功能 ASP.NET 2.0 中收集的小功能点 asp.net2.0中的webpart使用...
后遗症解决方案:PermissionFilter.java 50行处 解决了这个问题,详情请看代码和注释,其实就是replace 了一下。 HttpServletRequest httpRequest = ((HttpServletRequest)request); /** * 此处是改版后,为了...
2) 修改静态编译后“选择列表框”在“单选”属性为真时不显示项目内容的BUG 3) 修改核心库中“播放音乐”命令在没有声卡或声卡被禁用时未正确释放资源的BUG 4) 修改静态编译后“读配置项”命令在第三个参数“配置...
对于Excel表的读取是很频繁的一件事情,主要是用来记录各种数据,各个平台可能有很多方式方法,比如Android,你可以插件,也可以用第三方Java开发,打包成Plugin下用的.dll包,再C#和Java交互实现Excel读取(比较麻烦...