应用程序的打包和发行

戏子无情 提交于 2020-01-26 17:16:55

Java应用程序可以脱离Eclipse运行,但在运行之前要把应用程序打成一个JAR包,Eclipse下打包的方式方法和标准的AWT/SWUNG程序基本一样,主要有以下几点:

a.MANIFEST.MF(舱单):打包清单文件。它是打包的关键文件,在运行Java应用程序时,需要根据此文件的信息来查找入口类和支持库。
b.支持库:如果Java应用程序用到了一些Eclipse包,那么就必须将这些包也复制到程序运行目录,否则程序无法运行,如SWT组件支持库swt.jar,JFace组件支持库jface.jar等,这些JAR包都要在MANIFEST.MF文件中设置好。
c.本地化文件:如果用到SWT组件,还需要将SWT的本地化文件swt-win32-3235.dll(3235是版本号)复制到程序运行目录,否则程序无法运行。

打包的具体的操作步骤

1.创建清单文件

Eclipse提供了用于打包项目的“导出”向导,但运行向导之前需要创建一个清单。在项目根目录下(也可以是其他目录)新建清单文件manifes.txt(可任意名)。Eclipse向导在打包时,会自动地将manifes.txt的内容复制到JAR包的META-INF目录的MANIFEST.MF文件中。manifes.txt内容如下:

Manifest-Version: 1.0
Class-Path: ./lib/org.eclipse.swt.win32.win32.x86.jar
Main-Class: cn.com.chengang.swt.SashForm1
(空行)

Mainfest-Version:指定清单文件的版本号。
Class-Path:指定支持库的路径。“.”指程序运行目录,即导出的JAR包所在的目录。每个支持库之间用空格隔开。
Main-Class:指定程序运行的入口类(全类名,不加扩展名class)。
注意:设置限不区分大小写,如Clsaa-Path可以写成class-path等;Class-Path可能要设置很多支持库,最好写在一行并以空格隔开,也可以分行写,但行首必须带一空格:

Class-Path: ./lib/org.eclipse.swt.win32.w(行首不能有空格)
 in32.x86.jar(行首必须带一个空格)

常见错误:Invaild or corrupt jarfile ***.jar错误,3个设置项的冒号后面需要至少一个空格;Could not find the main class. Program will exit.Main-Class中SashForm1后面不能有空格;Failed to load Main-Class manifest attribute from ***.jar,必须最后多出一个空格。

2.使用Eclipse “导出”向导来打包项目

右击项目名。选择导出命令,在对话框中选择JAR文件选项;
无标题

将不需要导出的文件取消复选框,并选择输出路径和包名,注意:虽然现在了src目录,但Java源文件不会导出到包中,除非选中了“导出Java源代码文件和资源”;
无标题

指定清单->从工作空间中使用现有清单;(也可以生成清单文件)
无标题

3.复制Java应用程序的支持库及本地化文件

把支持库复制到Class-Path指定的目录,并修改为指定的文件名称。在这里把支持库eclipse/plugins/org.eclipse.swt.win32.win32.x86_3.2.1.v3235.jar复制到打出JAR包目录/lib下,并重命名为org.eclipse.swt.win32.win32.x86.jar。
用解压工具打开org.eclipse.swt.win32.win32.x86.jar,从中将swt-win32-3235.dll复制到JAR包目录(Windows平台的本地化文件)。

4.编写运行jar包的run.bat

在JAR包目录先新建run.bat批处理文件,内容为javaw -jar HelloWorld.jar即可
在运行时会有一个讨厌的黑色命令窗口,要去掉它,可以修改为start javaw -jar HelloWorld.jar,start相当于Windows的“运行”命令;如果想把swt-win32-3235.dll放在独立的文件夹中,如**/native目录,则改为start javaw –Djava.library.path=./native/ –jar HelloWord.jar。

其他得到JAR包的方式

1.使用JDK自带的jar.exe命令

jar cvfm HellloWorld.jar ***\manifes.txt -C ***\bin .

cvfm是jar命令4个参数的组合:c指创建新的JAR包,v指调试信息打印到屏幕,f指定jar文件名,m指使用自定义的清单文件;“-C 路径 .”:将某路径下的所有文件打包,bin目录下式编译后的class文件,所以源路径指定为它。

2.使用Fat Jar插件打包项目
安装插件Fat Jar,右击项目,选择 "BuildFatJar” 命令
无标题

Jar-Name项输入JAR包名,Mainfest不用填写,默认会自动创建一个清单文件,Main-Class填写入口类,其他设置不变。
无标题

项目所用到的支持库都会列出来,选择需要的即可,当然全选也可以,只是最后的JAR包会更大一些,因为Fat Jar会将所有支持库合并在一个JAR包中。
单击完成,JAR包会输出到项目目录中,和以前一样,要运行此JAR包需要批处理文件以及本地化文件。唯一不同的是不在需要Eclipse支持库,因为所有库已经打包到JAR包中了。

让用户不必另外安装JRE环境

运行Java程序一般要求用户电脑先安装JRE环境。虽然安装JRE环境很简单,但是毕竟多了一步。不必安装JRE环境的实现步骤如下:
1.将JDK下的jre目录复制到JAR目录\java目录下(java可换为其他名称);
2.修改批处理文件为 "start java\jre\bin\javaw –jar HelloWorld.jar”,新命令给javaw指定了相对路径;
3.双击bat文件即可在没有安装JRE环境的电脑中运行此Java应用程序。

创建EXE执行程序及美化图标

1.使用JavaLauncher创建exe
JavaLauncher是一个开源的免费小程序,下载JavaLauncher,解压目录文件如下:
source目录包含JavaLauncher的源程序,使用C语言写的;changes.txt是新版的修改说明;launch.exe是主程序;launcher.cfg是配置文件;readme.txt是一些说明和示例。
只需要两个文件launch.exe和launcher.cfg,将它们复制到JAR包所在目录。launcher.cfg是一个仅3行的文件,修改如下:

.
javaw.exe 
-jar HelloWorld.jar

第一行是JAR包的目录,此时launch.exe和GAR在同一个目录下;第二行是javaw的路径。配置好后,双击launce.exe即可运行java应用程序。

2.美化图标
launch.exe的图标太单调了,可以使用免费软件Resource Hacker给它换一个。
下载Resource Hacker,运行ResHacker.exe,选择主菜单“文件-打开”,将launch.exe文件载入。展开“ 图标-1-1030 ”结点,选择“替换资源…”
无标题

“打开新图标文件”,然后单击替换即可。注意:图标文件可以是exe、dll、res、ico,该软件会从这些文件中抽取出图标。最后“文件-保存为”新文件取名为newtest.exe。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!