当项目完成后接下来的就是打包发行了,这里说的非Applet,Web application等,而是指纯粹的控制台程序或有图形界面的java程序。通常程序的打包发行指把程序打包成.exe执行文件或脚本文件来方便用户的执行使用。在工作中完成一个车辆定位后台通信服务程序,主要通过UDP协议与终端设备进行数据的传输,在开发完后进入程序的打包发布阶段,通过查找资料,在网络上搜索到一篇文章--java应用程序项目的打包与发行,此文叙述清楚,按其操作成功,现根据此文对脚本运行java程序的打包发布步骤进行简单的总结,详细内容见本人博客中的《java应用程序项目的打包与发行》一文。
主要有以下三个要点
l MANIFEST.MF - 打包清单。它是打包的关键性文件,主要是设置执行入口类和支持库的路径,在运行Java应用程序时是要根据此文件中给出的信息来查找入口类和支持库。
l 支持包 -如果Java应用程序用到了一些类库包,那么就必须将这些包也复制到程序运行目录,否则程序将无法运行。如swt组件支持包swt.jar,jface组件支持包jface.jar。这些包都要在MANIFEST.MF文件中设置好。
l 资源文件 - 例如程序中用到本地化文件,资源文件等,需要把这些资源文件复制到程序运行目录,否则程序将无法运行。
打包的具体操作步骤 :
以下步骤的说明都是以开发工具 eclipse,工程agps为例,如果手动或使用其他工具来打包程序,可能步骤方式不同,但原理同。
1、编辑清单MANIFEST.MF
(1)Eclipse提供了用于打包项目的“导出”向导,但本例运行此向导之前先需要创建一个MANIFEST.MF清单文件,其内容如下:
Manifest-Version: 1.0
Main-Class: com.mdragonway.agps.VGListener
Class-Path: ./lib/log4j.jar ./lib/msbase.jar ./lib/mssqlserver.jar
./lib/msutil.jar ./lib/weblogic.jar ./lib/xbean.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)将清单文件保存下来,建议放在工程项目的根目录下。它的文件名可以任意取,本例取名为manifes.txt,利用一些工具如Eclipse向导在打包时会自动的将manifes.txt的内容复制到JAR包的META-INF目录下的MANIFEST.MF文件中。
2.把源码文件打成jar包
根据manifes.txt文件对源码进行打包,在eclipse中打包过程中选择“从工作空间中使用现有清单”选项选择上述编辑好的清单文件,完成打包后的agps.jar文件放到agps目录下,agps.jar的内部目录一般会有程序源码的包路径和META-INF目录,META-INF中仅一个文件:MANIFEST.MF,它和以前创建的清单文件manifest.txt的内容是一样的,如下:
Manifest-Version: 1.0
Main-Class: com.mdragonway.agps.VGListener
Class-Path: ./lib/log4j.jar ./lib/msbase.jar ./lib/mssqlserver.jar
./lib/msutil.jar ./lib/weblogic.jar ./lib/xbean.jar
把生成的jar文件
3.复制Java应用程序的支持包及本地化文件
把MANIFEST.MF文件中的Class-Path项设置指把定的类库文件拷贝到agps目录中的lib目录下,把资源文件拷贝到agps目录下,
4、编写运行agps.jar包的批处理程序“run.bat”
在myswt_application目录下创建一个批处理程序run.bat(名字任取,扩展名必须是bat),其内容仅一句语句,如下:
javaw -jar agps.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\resources”目录,则需将run.bat内容更改为:
start javaw -Djava.library.path=./resources/ -jar myswt.jar
上述四步骤便可以完成一个带有各种资源(例如配置文件,本地化文件等)的工程的打包发布。
分享到:
相关推荐
Java应用程序项目的打包与发行工具,里面附带有如何打包发行操作说明。
如果项目是一个eclipse项目,则首先确保项目在eclipse中至少以发行版本成功的编译过一次,这么做的目的是让eclipse生成需要的Makefiles,然后将项目复制一份出来,以后工作就针对这个拷贝进行。接下来对复制出来的源...
小剧场短剧影视小程序源码 全开源 带支付收益等模式 付费短剧小程序源码 多平台小程序支持 项目功能介绍 ...前端支持打包 抖音小程序,快手小程序,百度小程序,H5和微信小程序 需要哪个端就发行到哪个端即可
Java 运行时环境(JRE)允许您执行 Java 应用程序,组件和小程序,而 Java 开发套件(JDK)提供了一套全面的工具,供程序员构建,运行,调试甚至记录 Java 代码。 您还可以访问 JRE 的 Java 虚拟机(JVM)组件以及...
这些示例与本书中显示的代码段相匹配,旨在使读者对材料有所了解,这些示例可以在IDE中查看,并且所有构建项目示例都可以成功编译和打包。 但是,并非所有示例都打算部署到应用程序服务器上,这是由于示例
Java 运行时环境(JRE)允许您执行 Java 应用程序,组件和小程序,而 Java 开发套件(JDK)提供了一套全面的工具,供程序员构建,运行,调试甚至记录 Java 代码。 您还可以访问 JRE 的 Java 虚拟机(JVM)组件以及...
通过此功能,可以在单个JAR中为不同的Java运行时环境打包相同类的多个版本。 该示例显示了考虑Java版本8、9和10以及Java模块的情况下该选项的使用。 要求 Java> = 10编译器 编译应用 执行构建脚本或通过命令行构建...
该案例采用目前最流行、最规范的java ee架构,整个应用分为jpa实体层、eao层、业务逻辑层、mvc层和视图层,各层之间分层清晰,层与层之间以松耦合的方法组织在一起。该案例既提供了ide无关的、基于ant管理的项目源码...
使用Docker和Kubernetes开发包含容器的Java EE-8应用程序 Packt发布的使用Docker和Kubernetes开发容器化Java EE 8应用程序的代码存储库 使用Docker和Kubernetes容器化Java EE 8应用程序[视频] 这是由发行的来对进行...
GraalVM(graalvm-ce-java17-linux-aarch64-21.3.0.tar.gz适用于Linux (aarch64)), GraalVM 是一个高性能 JDK 发行版,旨在加速用 Java 和其他 JVM 语言编写的应用程序的执行,并支持 JavaScript、Ruby、Python 和...
后台管理系统、后台管理框架、JAVA管理后台、Springboot管理后台、前后端分离管理后台、Vue3管理后台、Vue.js管理后台、Element UI管理后台.likeadmin已经搭建好前后端分离的底层,包含程序安装、登录、登出、工作...
GraalVM(graalvm-ce-java17-linux-amd64-21.3.0.tar.gz适用于Linux (amd64) ), GraalVM 是一个高性能 JDK 发行版,旨在加速用 Java 和其他 JVM 语言编写的应用程序的执行,并支持 JavaScript、Ruby、Python 和...
反之亦然( ) Apache HttpComponents(可选):Apache HttpComponents:trade_mark:项目负责创建和维护专注于HTTP和相关协议的低级Java组件的工具集( ) OkHttp(可选):适用于Android和Java应用程序的HTTP&SPDY...
呈现为简单电影应用程序的Android Achitecture组件LiveData,Dagger2,RxJava2,Pagination等-打包为示例电影列表应用程序使用应用克隆仓库。 使用git log检查历史git log 将reset repo切换到该特定的提交(使用git ...
Spoon通过打包运行时和其它应用程序组件,消除由于丢失或不匹配组件版本导致的应用程序故障。 动态沙箱隔离管理 动态隔离管理允许虚拟化应用程序运行在完全隔离或与其它应用程序共享的环境,允许共享数据和配置。
如果您使用同一版本的 Microsoft Visual C ++ 创建多个应用程序,则所有使用同一版本的 Microsoft Visual C ++ 创建的应用程序都需要一个可再发行组件包。 当您需要 Microsoft Visual C ++ 可再发行组件时 如果您有...
您是否曾经编译并打包了一个虚拟Android应用程序只是为了在smali中获取一些Java源代码? 停下! 将Java转换为smali变得更加容易。用法创建或打开具有所需功能的Java源文件点击“构建”和“编译为smali” 等待IDEA...
2、一些项目依赖第三方jar包,如果发生问题,但第三方包中无日志打印,以往可能需要重新编译第 三方包,加上日志,重启服务,然后排查问题。但使用这个工具,就可以直接动态加入日志,而不用 修改第三方jar包...
CRMEB JAVA版商城系统是基于Java(SpringBoot) + Vue...5、安装Hbuilder 打开app 目录下的uniapp项目 修改config文件下的api 变量后 发行H5 和 微信小程序,H5上传对应移动端网站,小程序填写对应appid后上传小程序平台
★易语言功能强大实用,现已具有数十个各种应用范围支持库、上百个数据类型和界面组件、近万条支持命令,支持现今所有数据库,功能丝毫不比其它同类产品差。 全自主知识产权 易语言系统全部自行设计开发。 ★自有...