说明:在eclipse中运行java程序的时候一切正常,可是当把jar包导出的时候却发现图片没法显示,这估计是java程序的各种配置和路径问题所导致,后来找到一种解决方法,供遇到这方面问题的学习java程序的鞋同参考:
Java项目下的目录结构如下:
其中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");
但是导出jar包school2.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到项目中,如下:
通过这样的命名规则(package accpedu;)导入accpedu.jar包后,其图片会自动导入到了class相同的目录下:
然后再导出java程序的可执行的jar包school.jar:
解压school.jar包后,图片的确导入到了class相同的目录下:
注意:图片的jar包的命令规则必须与class在包中package的结构一致,这样才能正确的把需要导入的图片导到class相同的目录下;另外,用这种方法来显示图片,必须确保图片导到了class目录下,否则程序运行会出现问题,假如图片文件名写错了butffler.jpg 写成butffler1.jpg,即会出现下面问题,不仅图片显示不出来,更严重的是整个登录框可没显示完整,这是需要注意的:
到此,上述就是一种关于解决eclipse导出java程序的可执行的jar包的图片无法显示的方法!