首先看一下项目结构: 说明: 1、其中com.yp.jars里面放了mssql驱动和jdom的jar包。 2、可以看到resources资源文件夹里有三个文件,其中sysTray.jpg是当程序缩小到系统托盘时显示的图标,databases.xml是数据库配置文件。
难点阐述: 在com.yp.base包里有一个类文件ConnectionFinder.java和com.yp.client包里有一个类文件YPEnglishClient.java 他们在程序运行的时候需要读取到上面我们说的sysTray.jpg和databases.xml文件,当你在eclipse里编写与测试的时候一切正常,而一旦打包好之后程序就不能正常运行。经过研究发现原来是当程序打包好就变成了一个*.jar的文件,自然读取不到我们要的那两个文件。解决办法就是当程序打包好之后,把包含这以上我们要读取的两个文件的文件夹resources,放到与项目打包好之后的*.jar文件同级目录中。 这里还要进一步说明的是,文件我放好了,那程序里读取文件的代码该如何写呢,这里我将源代码复制上来,如下:(基本原理就是设法读取到项目文件路径) ConnectionFinder.java 文件中的代码: String filePath=System.getProperty("user.dir")+"/resources/databases.xml";//项目路径加文件路径 Document doc=builder.build(new File(filePath));
YPEnglishClient.java 文件中的代码: String filePath=System.getProperty("user.dir")+"/resources/sysTray.jpg";//项目路径加文件路径 trayIcon=new TrayIcon(ImageIO.read(new File(filePath)));//设置托盘的图标
其中的System.getProperty("user.dir")就是去的项目的路径
实际的打包步骤如下: 第一步:安装fat jar 下载地址:http://sourceforge.net/project/showfiles.php?group_id=115990&package_id=125924 解压缩后是一个net.sf.fjep.fatjar_0.0.31文件夹,把其中plugins下面的net.sf.fjep.fatjar_0.0.31.jar文件夹拷贝到eclipse的plugins下,重新启动Eclipse3.1,Windows=>prefernce=>fat jar preference看到他就说明已经安装成功了。如果没有看到,没有关系,删除D:/eclipse310/configuration/org.eclipse.update/platform.xml文件(此文件可以自动生成)不用担心以前的插件会因此而消失,没事。 第二步:开始打包 右键项目选择Export(导出)=>Other=>Fat Jar Exporter 如图: 点击next,选择你要打包的项目。出现提示框,如图:
解释: 1、use extern Jar-Name 勾选上之后点击右边的Borwse按钮可以选择项目外的路径,否则打包的程序会在项目文件夹里面。在这里,我勾选上了。 2、select Manifest file 是指的清单文件,里面应该写的是打包的文件信息。但是由于我不知道怎么写清单文件类容。如果未选择它。 3、Main-Class 选择程序入口的main方法 4、One-JAR 这个是最关键了,应为我想把我的项目就打包成一个jar文件,拿到哪里都能用,所以我勾选上了. 5、点击Finish完成。 6、找到打包好的文件,在相同目录中新建一个文件夹resources(与项目中的resources资源文件夹同名),然后将项目中的resources的databases.xml和sysTray.jpg两个我们要用到的文件拷贝到这个新建的resources文件夹中。 7、一切完成~~开心ing…… |