最近在用Eclipse写Java桌面程序,程序写到菜单部分(JMenu)的部分,其中 |帮助|菜单下有一个|关于|的菜单项,实现程序说明(弹出小窗口)的功能,窗口内部插入了一张gif,在Eclipse内部运行正常,但是导出为jar包的时候之后,既脱离Eclipse环境,就不能单独运行。选择不同的导出方式不行,网上搜索许久,没有找到合适的解决方案,安装FatJar插件导出仍然不能解决问题。

问题分析:考虑到之前我没有插入gif的时候,导出为jar包是可以运行的。整个项目的包结构是com.*****.*****.frame包内集合框架类,com.*****.*****.pictures包内集合需要的图片,JLabel标签插入图片的代码如下:

 

 
  
  1. ImageIcon logo = new ImageIcon(getClass().getResource("../pictures/logo.gif")); 
  2. //由于picture目录里面的内容相对于frame目录的是../picture/*.*关系 
  3.  
  4. //后来折腾半天,把logo.gif直接放到和调用图片的类在同一个目录,再导出,程序能正常运行,于是参考网友的包结构,在src目录下建立/p_w_picpaths/目录,把图片放到里面,上面的引用语句改为 
  5. ImageIcon logo = new ImageIcon(getClass().getResource("/p_w_picpaths/logo.gif")); 
  6.  
  7. //再导出后问题解决。原来java程序编译时,会从src目录逐层往下搜索文件引用