把图片导出到jar文档

用Eclipse导出jar包,可能会遇到所用的图片怎么打不到jar中。那么怎样才能把图片导入到jar中,好吧,咱们来简单的说说。分两种编译路径来讲。 java

状况一:eclipse

一、  Window-Prefences中的Build Path以下:ui

Eclipse把资源文件(图片等)打入jar包 - 竹祎 - 竹祎的博客 

二、  工程temp、包test.sfx及源文件Test.java、存放图片的文件夹images及图片surfing.gif的关系以下:spa

Eclipse把资源文件(图片等)打入jar包 - 竹祎 - 竹祎的博客

Test.java的源码:.net

package test.sfx;图片

import javax.swing.*;ip

 

public class Test {资源

 

    JFrame jf=new JFrame("Test");字符串

    JLabel jl=null;get

   

    public Test(){

      

       jl=new JLabel(new ImageIcon(Test.class.getResource("/images/surfing.gif")));

       jf.add(jl);

       jf.setSize(300,300);

       jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

       jf.setVisible(true);

    }

 

    public static void main(String[] args) {

       new Test();

    }

 

}

注意粗体部分的为使用图片的方法Test.class.getResource("/images/surfing.gif")Test是使用图片所在类的类名,字符串前有/

三、  导出jar包名为test.jar,这个就不用说啦,你们都知道啊

四、  用winrar打开test.jar,以下图

   Eclipse把资源文件(图片等)打入jar包 - 竹祎 - 竹祎的博客  

images里存放serfing,gif,sfx里存放的是Test.class。事实上getResource("/images/surfing.gif")的字符串前

【1】        有/时,系统从bin目录开始搜索,找到images,在找到suring.gif的。打成test.jar文件,这个文件就至关于bin,因此由上面的目录树可知依然能够找到图片。当咱们在src中建立images文件夹并把图片放在其中,记得要在工程目录上右击选择refresh,以后运行,eclipse会自动在bin目录下建立一个文件夹images,存放的资源和src下的是同样的。就是说eclipse会将src中的文件夹连同.java文件生成的class文件和资源文件一同放到bin下。打成jar后,jar文件就至关于bin。

【2】        没有/时,是从包目录开始搜索的,因此能够把images放到src/test/sfx下面,以后refresh,运行,会发如今bin/test/sfx下有images,其实道理就是粗体部分所说的啊!

【3】        能够把图片surfing.gif直接放在src/test/sfx下面,那么红体字符串就是surfing.gif

状况二

1、若是在Window-Prefences中的Build Path以下:

Eclipse把资源文件(图片等)打入jar包 - 竹祎 - 竹祎的博客

2、工程temp、包test.sfx及源文件Test.java、存放图片的文件夹images及图片surfing.gif的关系以下:

Eclipse把资源文件(图片等)打入jar包 - 竹祎 - 竹祎的博客

3、代码中的红体字符串仍是/images/surfing.gif,这里的搜索就是从工程temp开始的了。打成jar文件后,jar文件也就至关于工程目录。若是是images/surfing.gif,就是从test/sfx开始搜索,因此能够把images放在test/sfx下,注意字符串变成了images/surfing.gif,以后refresh。运行正常,打包也能够运行。

补充

对了还有Test.class.getResource("/images/surfing.gif")能够用

Test.class.getClassLoader().getResource("images/surfing.gif")来替换,这个类加载器,怎么查找实在是复杂。在磁盘上文件位置不变的状况下,代码中这两种写法都是正确的哈。

 

 

重点:

咱们把图片导进jar里面,这样才方便程序获取资源。

因而咱们经过,类名.class.getResource("路径");来获取资源的话,在咱们导出的时候就能够把相应的资源一块儿导出。

当咱们使用绝对路径的话,咱们的根目录就是src文件夹(例如:”/example/image.jpg“)

当咱们使用相对路径的时候,咱们的初始相对路径就是对应class所在的文件夹(例如:”example/image.jpg“)

相关文章
相关标签/搜索