Eclipse下导出java程序可执行的jar包图片无法显示问题的一种解决方法

时间:2024-03-21 16:49:57

通过eclipse导出的软件在自己的电脑上运行可以显示图片,但是换一个环境,在别的电脑上运行则没有办法显示图片,下面的这个方法可以解决这个问题,要注意两个方面的问题:
第一:改变图片的加载形式

java.net.URL imgURL5 = DoctorTestArea.class.getResource("/images/ccc.jpg");
ImageIcon showtest =new ImageIcon(imgURL5);
其中DoctorTestArea指的是当前的主类。

第二:
将图片类放在一个文件夹中,生成 .jar形式的包,并导入Eclipse运行的jre环境中,

详细方法如下攻略::

说明:在eclipse中运行java程序的时候一切正常,可是当把jar包导出的时候却发现图片没法显示,这估计是java程序的各种配置和路径问题所导致,后来找到一种解决方法,供遇到这方面问题的学习java程序的鞋同参考:

Java项目下的目录结构如下:

Eclipse下导出java程序可执行的jar包图片无法显示问题的一种解决方法

其中class类放在包:package accpedu; (即实际是在如上bin/accpedu文件夹下面)

通过下面的方法来引用图片时,在eclipse里面执行是可以正常显示图片的:

    ImageIcon image1 = new ImageIcon();

    ImageIcon image2 = new ImageIcon();

    ImageIcon image3 = new ImageIcon();

    ImageIcon image4 = new ImageIcon();

    ImageIcon image5 = new ImageIcon();

    image1 = new ImageIcon("images/butffler.jpg");

     image2 = new ImageIcon("images/username.gif");

    image3 = new ImageIcon("images/password.gif");

    image4 = new ImageIcon("images/warning.gif"); 

    image5 = new ImageIcon("images/role2.jpg");

Eclipse下导出java程序可执行的jar包图片无法显示问题的一种解决方法


但是导出jarschool2.jar后执行,却发现图片没有显示出来:

Eclipse下导出java程序可执行的jar包图片无法显示问题的一种解决方法

经过一番分析和调试之后,找到了一种解决方法,将引用图片的那段代码修改为下面的方式:

//这种方法即可以在eclipse下找到图片路径,也可以在导出的jar包中找到图片路径 

 //图片必须要放在class目录下面

      java.net.URL imgURL1 = LoginFrame.class.getResource("butffler.jpg");

      image1 = new ImageIcon(imgURL1);

      java.net.URL imgURL2 = LoginFrame.class.getResource("username.gif");

      image2 = new ImageIcon(imgURL2);

      java.net.URL imgURL3 = LoginFrame.class.getResource("password.gif");

     image3 = new ImageIcon(imgURL3);

     java.net.URL imgURL4 = LoginFrame.class.getResource("warning.gif");

     image4 = new ImageIcon(imgURL4);

     java.net.URL imgURL5 = LoginFrame.class.getResource("role2.jpg");

     image5 = new ImageIcon(imgURL5);

 

然后还需要导入一个图片的jar包,由于这种方法必须把图片文件(如butffler.jpg)放在class的相同目录下,即放到目录accpedu下,否则会找不到图片路径的;这样需要把images文件夹改名为accpedu并压缩为accpedu.jar包,其中accpedu文件里面就是直接的图片文件,没有多余的文件夹,这是因为class类放在包:package accpedu;中;然后就可以导入accpedu.jar到项目中,如下:


Eclipse下导出java程序可执行的jar包图片无法显示问题的一种解决方法

通过这样的命名规则(package accpedu;)导入accpedu.jar包后,其图片会自动导入到了class相同的目录下:

然后再导出java程序的可执行的jarschool.jar


Eclipse下导出java程序可执行的jar包图片无法显示问题的一种解决方法

解压school.jar包后,图片的确导入到了class相同的目录下:

Eclipse下导出java程序可执行的jar包图片无法显示问题的一种解决方法

注意:图片的jar包的命令规则必须与class在包中package的结构一致,这样才能正确的把需要导入的图片导到class相同的目录下;另外,用这种方法来显示图片,必须确保图片导到了class目录下,否则程序运行会出现问题,假如图片文件名写错了butffler.jpg 写成butffler1.jpg即会出现下面问题,不仅图片显示不出来,更严重的是整个登录框可没显示完整,这是需要注意的:

Eclipse下导出java程序可执行的jar包图片无法显示问题的一种解决方法

到此,上述就是一种关于解决eclipse导出java程序的可执行的jar包的图片无法显示的方法!