插件打包

本文详细介绍了如何使用Eclipse、WinZip、WinRAR、Java自带的jar.exe以及第三方插件进行Java应用程序的打包与发行过程,包括创建MANIFEST.MF文件、设置支持包和本地化文件、编写运行批处理程序等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

eclipse-项目打包与发行,Eclipse SWT应用程序项目的打包与发行


当项目完成后接下来的就是打包发行了,应用程序(Application)项目和Eclipse插件项目(plugin)的打包是不同的,本章将分别介绍两者的打包方法,并给出实际的打包例子。

7.1 应用程序项目的打包与发行

7.1.1 简介

Java应用程序项目完成后是可以脱离Eclipse运行的,要运行程序先要打它打成一个JAR包,它打包的大部份方法和标准Java的AWT/SWING的打包方法一样,主要有以下几个要点


l MANIFEST.MF - 打包清单。它是打包的关键性文件,主要是设置执行入口类和支持库的路径,在运行Java应用程序时是要根据此文件中给出的信息来查找入口类和支持库。


l 支持包 -如果Java应用程序用到了一些Eclipse包,那么就必须将这些包也复制到程序运行目录,否则程序将无法运行。如swt组件支持包swt.jar, jface组件支持包jface.jar。这些包都要在MANIFEST.MF文件中设置好。


l 本地化文件 - 如果用到了SWT组件,则还需要将SWT的本地化文件swt-win32-3063.dll(3063是版本号)复制到程序运行目录,否则程序将无法运行。


7.1.2 打包的具体操作步骤

本节将用前几章开发的SWT/JFace项目"myswt"的打包为例,来介绍打包应用程序项目的方法。


1、编辑清单MANIFEST.MF


(1)Eclipse提供了用于打包项目的"导出"向导,但本例运行此向导之前先需要创建一个MANIFEST.MF清单文件,其内容如下:


Manifest-Version: 1.0


Main-Class: book.chapter_4.wizard_dialog.WizardDialog1


Class-Path: ./lib/swt.jar ./lib/jface.jar ./lib/runtime.jar


说明:


l Manifest-Version - 指定清单文件的版本号


l Main-Class - 指定程序运行的入口类。本例设为运行4.5.2节开发的向导式对话框。注意:类名后不要加class扩展名


l Class-Path - 指定支持库的路径。"."指程序运行目录,即导出的JAR包所在目录。程序运行时依据Class-Path项的设置路径来查找支持库。每一个支持库之间用 空格隔开。在这里jface.jar需要用到runtime.jar包,所以runtime.jar包也要加入到Class-Path中。


l 除了入口类的包名和类名之外,其他设置项都不分大小写,比如:Class-Path写成class-path或CLASS-PATH也可以,swt.jar写成SWT.JAR也行。


(2)将清单文件保存下来,建议放在myswt项目的根目录下。它的文件名可以任意取,本例取名为manifes.txt,Eclipse向导在打包时会自动的将manifes.txt的内容复制到JAR包的META-INF目录下的MANIFEST.MF文件中。


2、使用Eclipse"导出"向导来打包项目


(1)右键单击myswt项目的项目名,在弹出菜单中选择"导出"。在弹出的如下图7.1所示的对话框中,选择"JAR文件",单击"下一步"。


图7.1 导出对话框


(2)如下图7.2所示,将右边不需要的文件都取消勾选。在"选择导出目标"项文本框中设置JAR包的输出路径和包名(可以任意取名)为"D:\myswt_application\myswt.jar"。接受其他的默认设置不变,单击"下一步"。


附注:左边虽然选择了src目录,但源文件并不会导出到包中,除非勾选了"导出Java源代码文件和资源"项。


图7.2 选择导入文件


(3)如下图7.3所示,接受默认设置不变,单击"下一步"。


图7.3 导出类的选项


(4)这一步较关键。如下图7.4所示,选择"从工作空间中使用现有清单"项,将创建的清单文件输入,也可以通过旁边的"浏览"按钮来选择清单文件。输入清单文件后,单击"完成",Eclipse开始将项目打包。


图7.4 清单文件设置


经过以上四步后,在"D:\myswt_application"路径下生成了一个名为"myswt.jar"的文件。myswt.jar是一个ZIP格 式的压缩文件,可以用WinRAR或WinZip软件打开,也就是说用这两个软件也可以替代Eclipse向导来打包文件。如果用WinRAR来打包文 件,则压缩格式要选择ZIP格式而非RAR格式,压缩率倒可以任意选。


用WinRAR打开myswt.jar文件后其内部的目录结构如下图7.5所示:


图7.5 myswt.jar文件的内部目录结构


在myswt.jar文件的内部目录META-INF中仅一个文件:MANIFEST.MF,它和以前创建的清单文件manifest.txt的内容是一样的,如下:


Manifest-Version: 1.0


Class-Path: ./lib/swt.jar ./lib/jface.jar ./lib/runtime.jar


Main-Class: book.chapter_4.wizard_dialog.WizardDialog1


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


在MANIFEST.MF 文件中的Class-Path项设置了三个包,从Eclipse的plugins目录中将此三个支持包复制到D:\myswt_application\ lib目录,本地化文件swt-win32-3063.dll复制到D:\myswt_application目录中。此三个文件在Eclipse中的路 径为:


plugins\org.eclipse.swt.win32_3.0.1\ws\win32\swt.jar


plugins\org.eclipse.jface_3.0.0\jface.jar


plugins\org.eclipse.core.runtime_3.0.1\runtime.jar


plugins\org.eclipse.swt.win32_3.0.1\os\win32\x86\swt-win32-3063.dll


复制完成后的目录结构如下图7.6所示:


图7.6 目录结构图


4、编写运行myswt.jar包的批处理程序"run.bat"


在myswt_application目录下创建一个批处理程序run.bat(名字任取,扩展名必须是bat),其内容仅一句语句,如下:


javaw -jar myswt.jar


说明:


l javaw对应c:\jdk\jre\bin\javaw.exe文件,如果windows提示命令未发现,则需要将c:\jdk\jre\bin路径加入到windows环境变量path中。


l 在运行程序的时候有一个讨厌的黑色命令行窗口,要去掉它,可以将run.bat内容更改如下:"start javaw -jar myswt.jar",start是指调用了windows的"运行"命令。


l 如果想将swt-win32-3063.dll也放在单独的目录中,如"D:\myswt_application\native"目录,则需将run.bat内容更改为:


start javaw -Djava.library.path=./native/ -jar myswt.jar


5、运行程序


双击run.bat文件,得到如下图7.7所示的程序界面。


图7.7 程序运行效果图


6、注意事项


本 例只需要三个支持包,但你的程序也许会需要更多的支持包才能运行。如果你想一次到位,则可以将"Java构建路径"的"库"选项卡中所有引用的包都复制到 lib目录中。如果你喜欢用到什么包才加入什么包,希望维持打包文件的简洁,则需要自己一步步的去试:如果缺少某支持包,运行程序时会输出的未找到类的错 误信息,从信息中的包名可得知程序缺少哪一个支持包。比如"Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jface/wizard/IWizard",从错误信息中很明显的就能知道程序缺少jface包


7.1.3 其他得到JAR包的方式

要得到JAR包除了以上所说的用Eclipse"导出"向导、用WinZip和WinRAR,另外还能用Java自带的命令行式打包软件jar.exe(位于c:\jdk\bin目录),其打包命令为:


c:\jdk\bin\jar cvfm myswt.jar C:\eclipse3.0.1\eclipse\workspace\myswt\manifest.txt -C C:\eclipse3.0.1\eclipse\workspace\myswt\bin .


说明:


l c:\jdk\bin\jar - 由于本书没有把c:\jdk\bin加入到windows环境变量path中,所以手工指定jar.exe的路径


l cvfm - jar.exe的参数,"c"创建新的jar包;"v"将调试信息打印在屏幕上;"f"指定生成的jar文件名;"m"使用清单文件。注意它们都是小写


l myswt.jar - 打包后的JAR包名


l 在前面是把清单文件manifest.txt放在C:\eclipse3.0.1\eclipse\workspace\myswt\目录下。如果将它和批处理文件放在一个目录就不必指定长长的路径了。


l "-C 路径 . "指将路径下(包括子目录)的所有文件打包,由于class文件是输出在项目的bin目录下,所以路径指定到项目的bin目录,注意三者之间是用空格隔开,并且最后一个字符是小数点。


这种方式的优点是没有Eclipse导出向导的操作那么麻烦,适合经常需要导出JAR包的情况。


7.1.4 使用第三方插件对项目打包


开 源组织(http://sourceforge.net/)中有一款可将Eclipse支持包和项目编译文件一起打到一个包中的插件,叫"Fat Jar",它的下载地址是"http://fjep.sourceforge.net/",具体下载不再说明,安装步骤参阅第1章SWT Designer的安装。


Fat Jar的使用步骤如下:


(1)右键单击myswt项目的项目名,可见菜单中多了一项"Build Fat Jar",如下图7.8所示,选择"Build Fat Jar"项。


图7.8 右键菜单


(2)在下图7.9所示的对话框中,"Jar-Name"项填入JAR包的输出路径。文件清单"Manifest"项不用填,默认会自动创建一个。"Main-Class"项填入程序的入口类。其他都接受默认值,单击"下一步"。


图7.9 输出配置


(3)如下图7.10所示,窗口中将myswt项目所用到的支持包都列了出来。我们仅勾选图中runtime.jar、swt.jar、 jface.jar这三项即可,当然全选也并尝不可,只是最后得到的JAR包会更大一些,因为Fat Jar会将所有支持包合并在一个JAR包中。


图7.10 选择要打包的文件


单 击图7.10的"完成"按钮后, JAR包myswt.jar将输出到D:\myswt_applicationh目录中。和以前一样,要运行此JAR包需要一个批处理文件以及本地化文件 swt-win32-3063.dll,唯一不同的是不再需要Eclipse支持包,其目录结构如下图7.11所示:


图7.11 目录结构


为什么不需要Eclipse支持包了呢?那是因为支持包已经在myswt.jar文件中了,从下图7.12可以看到swt.jar等都被拆散成目录,并包含在myswt.jar包中。


图7.12 myswt.jar的内部目录结构


其中META-INF目录的MANIFEST.MF文件内容如下,可以发现和以前不同的地方是:Class-Path项没有了。


Manifest-Version: 1.0


Created-By: Fat Jar Eclipse Plug-In


Main-Class: book.chapter_4.wizard_dialog.WizardDialog1


7.1.4 让用户电脑不必安装JRE环境

通常运行Java程序有个前提条件:用户电脑必须先安装JRE环境。虽然安装JRE环境非常简单,但毕竟多了一步,算是有一点点的瑕疵。这里给出一个不必让用户安装JRE环境的方法,其实现步骤如下:


(1)将原JDK中的"jre"目录复制到"D:\myswt_application\java1.4.2"目录下(java1.4.2也可换成其他名称)。


(2)将JDK和JRE从本机卸载掉,这样表示本机没有安装JAVA运行环境。


(3)修改批处理文件run.bat中的命令为"start java1.4.2\jre\bin\javaw -jar myswt.jar",仅仅是在javaw前加上了一个相对应路径。


双击run.bat即可在不安装JRE环境的电脑运行此Java应用程序。


7.1.5 更进一步的完善

1、抛弃批处理文件(*.bat)


用批处理文件运行程序似乎不够专业,虽然它足以完成运行任务。但习惯就象一种毒药一旦染上就很难摆脱它的影响,Windows统治下的人们早已经习惯运行扩展名是EXE的程序,用*.bat他们就会感觉别扭。


我们可以用一个叫JavaLauncher的免费小程序来代替批处理文件去运行Java程序。JavaLauncher的下载网址是:


http://www.rolemaker.dk/nonRoleMaker/javalauncher/marner_java_launcher.htm


下载下来的文件是一个名JavaLauncher.zip的压缩包,解压后的目录结构如下图7.13所示:


图7.13 JavaLauncher.zip目录结构


在上图的目录中


l source目录包含了JavaLauncher的源程序,是用C语言写的


l changes.txt是新版的修改说明


l launch.exe是主程序


l launcher.cfg是配置文件


l readme.txt是一些说明和示例


我们只需要launch.exe、launcher.cfg两个文件,将这两个文件复制到打包文件所在的目录。launcher.cfg是一个仅三行内容的文本文件,将它修改如下:


.


.\java1.4.2\jre\bin\javaw.exe


-jar myswt.jar


l 第一行设置指向JAR包myswt.jar的目录,由于launch.exe和myswt.jar同在一个目录,所以用"."即当前目录。


l 第二行设置指向jre\bin\javaw.exe的路径。在上一小节(7.1.4节)已将jre目录复制到了java1.4.2子目录中


配置好launcher.cfg后,双击launch.exe即可运行java应用程序。


如 果仔佃研究eclipse的启动方式,发现eclipse和JavaLauncher的原理一样:eclipse.exe相当于launch.exe, startup.jar相当于myswt.jar。只不过eclipse.exe不象launch.exe要具有通用性,所以它没有*.cfg这样的配置 文件,而是将启动信息固化在eclipse.exe中。


2、美化图标


launch.exe文件的图标太单调了,让我们给它换个好看点的。换程序的图标需要用到一个免费的软件:Resource Hacker,它有中文版,下载网址是:


http://www.users.on.net/johnson/resourcehacker/


用Resource Hacker来替换launch.exe的图标的步骤如下:


(1)运行Resource Hacker,得到如下图7.14所示的窗口。


图7.14 Resource Hacker的主界面


(2)单击主菜单"文件→打开",将launch.exe载入到程序中,结果如下图7.15所示。


图7.15 载入Lanunch.exe之后的界面


(3)如上图,选择左边的"图标→1→1030",然后右键单击"1030"项,选择"替换资源..."。如下图7.16所示,在弹出窗口中单击"打开新图标文件",选择一个满意的图标,然后单击"替换"按钮。


附注:图标文件可以是exe、dll、res、ico,该软件可以从exe、dll、res抽取出图标,本例选择的是java的一个图标文件JavaCup.ico。


图7.16 选择图标文件


(4)如下图7.17所示,选择"文件→另存为",取名myswt.exe。


附注:按理说选择"保存"也是可以的,这时Resource Hacker会将老的launch.exe备份成launch_original.exe。但也许是刷新上有问题,用"保存"方式有时launch.exe无法显示出新图标,但有时又可以。


图7.17 保存修改


(5)最后的目录如下图7.18所示,可见myswt.exe(也就是launch.exe改了个名称)的图标换成了Java的图标。双击myswt.exe即可运行Java应用程序。


图7.18 最后的效果


3、最后的打包


发送给用户之前,通常要用WinZip或WinRAR将所有的文件全部打成一个压缩包,然后用户得到这个压缩包后,将其解压缩后即可运行程序,Eclipse软件就是这种方式

autojs打包成apk的插件 Auto.js使用JavaScript作为脚本语言,目前使用Rhino 1.7.7.2作为脚本引擎,支持ES5与部分ES6特性。 因为Auto.js是基于JavaScript的,学习Auto.js的API之前建议先学习JavaScript的基本语法和内置对象,可以使用教程前面的两个JavaScript教程链接来学习。 如果您想要使用TypeScript来开发,目前已经有开发者公布了一个可以把使用TypeScript进行Auto.js开发的工具,参见Auto.js DevTools。 如果想要在电脑而不是手机上开发Auto.js,可以使用VS Code以及相应的Auto.js插件使得在 电脑上编辑的脚本能推送到手机运行,参见Auto.js-VSCode-Extension。 本文档的章节大致上是以模块来分的,总体上可以分成"自动操作"类模块(控件操作、触摸模拟、按键模拟等)和其他类模块(设备、应用、界面等)。 "自动操作"的部分又可以大致分为基于控件和基于坐标的操作。基于坐标的操作是传统按键精灵、触摸精灵等脚本软件采用的方式,通过屏幕坐标来点击、长按指定位置模拟操作,从而到达目的。例如click(100, 200), press(100, 200, 500)等。这种方式在游戏类脚本中比较有可行性,结合找图找色、坐标放缩功能也能达到较好的兼容性。但是,这种方式对一般软件脚本却难以达到想要的效果,而且这种方式需要安卓7.0版本以上或者root权限才能执行。所以对于一般软件脚本(例如批量添加联系人、自动提取短信验证码等等),我们采用基于控件的模拟操作方式,结合通知事情、按键事情等达成更好的工作流。这些部分的文档参见基于控件的操作和基于坐标的操作。 其他部分主要包括: app: 应用。启动应用,卸载应用,使用应用查看、编辑文件、访问网页,发送应用间广播等。 console: 控制台。记录运行的日志、错误、信息等。 device: 设备。获取设备屏幕宽高、系统版本等信息,控制设备音量、亮度等。 engines: 脚本引擎。用于启动其他脚本。 events: 事件与监听。按键监听,通知监听,触摸监听等。 floaty: 悬浮窗。用于显示自定义的悬浮窗。 files: 文件系统。文件创建、获取信息、读写。 http: HTTP。发送HTTP请求,例如GET, POST等。 images, colors: 图片和图色处理。截图,剪切图片,找图找色,读取保存图片等。 keys: 按键模拟。比如音量键、Home键模拟等。 shell: Shell命令。 threads: 多线程支持。 ui: UI界面。用于显示自定义的UI界面,和用户交互。 除此之外,Auto.js内置了对Promise。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值