`

java项目打包后,无法显示图片或无法读取文件问题解决方案

阅读更多
在项目中使用到了图片,可以将图片放在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
分享到:
评论
1 楼 xiaohuafyle 2012-07-02  
没有评论不幸福

相关推荐

Global site tag (gtag.js) - Google Analytics