2022年JavaJAR打包技术[收 .pdf

上传人:Che****ry 文档编号:34266430 上传时间:2022-08-15 格式:PDF 页数:7 大小:354.19KB
返回 下载 相关 举报
2022年JavaJAR打包技术[收 .pdf_第1页
第1页 / 共7页
2022年JavaJAR打包技术[收 .pdf_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《2022年JavaJAR打包技术[收 .pdf》由会员分享,可在线阅读,更多相关《2022年JavaJAR打包技术[收 .pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第 9 章 Java JAR 打包技术在开发过程中, 应用程序通常涉及到多个类,而这些类往往又分布在不同的包中,因此直接运行类文件并不是一种很好的方式,好在Java 提供了JAR 文件来提供应用程序的发布和运行,这样做可以减少下载时间、增强安全性和易管理性。JAR 文件就是Java Archive File ,是Java 的一种文档格式。JAR 文件跟ZIP 文件非常类似,也可以叫文件包。JAR 文件与ZIP 文件唯一的区别就是在JAR 文件中,包含了一 个 特 殊 的META-INF/MANIFEST.MF 文 件 , 用 于 包 含 应 用 程 序 的 标 签 信 息 。META-INF/

2、MANIFEST.MF 文件是在生成JAR 文件的时候自动创建的,该文件可以被修改,但需要重新传入到对应的jar 文件内才起作用。9.1 Jar主要的命令及应用1、JDK中的 Jar 命令程序(1)Jar 命令格式Jar 命令是随 JDK 安装的,在JDK 安装目录下的 bin 目录中:其主要的用法为:jar ctxuvfm0Mi jar-文件 manifest- 文件 -C 目录 文件名. (2)Jar 命令的主要选项及作用-c 创建新的存档-t 列出存档内容的列表-x 展开存档中的命名的(或所有的文件-u 更新已存在的存档-v 生成详细输出到标准输出上-f 指定存档文件名-m 包含来自标明

3、文件的标明信息-0 只存储方式;未用ZIP 压缩格式-M 不产生所有项的清单(manifest文件-i 为指定的jar 文件产生索引信息-C 改变到指定的目录,并且包含下列文件:如果一个文件名是一个目录,它将被递归处理。清单(manifest)文件名和存档文件名都需要被指定,按m 和 f标志指定的相同顺序。(3)应用实例应用实例1 jar cvf classes.jar Foo.class Bar.class (将两个 class文件存档到一个名为classes.jar 的存档文件中)应用实例2:jar tvf classes.jar (显示 jar 文件中所包含的所有目录和文件列表)应用实例

4、3:jar xvf classes.jar (解压 jar 文件到当前目录,显示解压过程的详细信息)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - 应用实例 4:jar tvf classes.jar c:test.txt ( ”“为重定向符号) ( 将显示输出到屏幕中的内容重定到 test.txt 中) 应用实例例5:jar cvfm classes.jar mymanifest -C foo/. (用一个存在的清单 (man

5、ifest) 文件mymanifest 将 foo/ 目录下的所有文件存档到一个名为classes.jar 的存档文件中)2、Jar 命令的综合应用示例(1)综合应用示例例如在D:code 下生成 testjar.Test.class,源文件如下:package testjar; public class Test public static void main(String args) System.out.println(hello jar); Jar 命令应用如下图所示、并生成test.jar 文件。(2)执行 test.jar 文件的 Java 命令(3)改写 MANIFEST.MF

6、文件从上述执行过程看,需要指定test.jar 文件执行的入口类,显然有一些麻烦,也容易造成无谓的拼写错误。这时可以通过改写META-INF/MANIFEST.MF 文件来为我们提供一些方便。过程如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - 第一步:修改META-INF/MANIFEST.MF 文件:Manifest-V ersion: 1.0 Created-By: 1.5.0_07 (Sun Microsystems

7、 Inc.) Main-Class: testjar.Test /添加执行的入口类信息,关于MANIFEST.MF其他内容后面章节讲解第二步:将修改后的META-INF/MANIFEST.MF 文件传入到test.jar 文件内,如下图所示。第三步:执行test.jar,如下图所示,显然这样执行简化很多。9.2 MANIFEST.MF文件通常 jar 文件正常运行需要依赖一些资源或信息。比如运行时的入口类,或者在运行时需要调用其他第三方jar 包等等。如果这些信息都在执行jar 包时指定的话,执行代码将比较复杂,容易出错。因此jar 文件指定了一个特殊的目录来存储这些资源信息:META-INF

8、目录,该目录中的MANIFEST.MF文件(清单),包含了 JAR 文件的内容描述,并在运行时向 JVM 提供应用程序的信息。大多数 JAR 文件含有一个默认生成的MANIFEST.MF文件 ,执行 JAR 命令可以自动生成,其内容如下:Manifest-V ersion: 1.0 Created-By: 1.5.0_07 (Sun Microsystems Inc.) 1、基本格式MANIFEST.MF文件的每一行都是【属性名值】对应,格式如下:(1)每一行都是【属性名: 值】对应,注意” :”后面要有一个空格(2)每行最多72 个字符,如果需要续行,那么续行必须以空格开头(3)以空格开头的

9、行,则被视为前一行的续行。2、常用属性Manifest-V ersion:指定清单文件的版本号:例如: Manifest-V ersion: 1.0 Created-By:指 定开发 应用程 序jdk 版 本。例如: Created-By: 1.5.0_07 (Sun Microsystems Inc.) Main-Class :指定程序运行的入口类。注意:类名后不要加class 扩展名。例如:Main-Class: testjar.Test 。 一旦定义了该属性, 该 jar 文件就可以通过java -jar testjar.jar来运行。Class-Path:mail.jar activa

10、tion.jar 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - 指定引入的第三方jar 包,引入多个时,用空格分开。如果jar 文件名中包含特定的字符,应使用逃逸符,比如空格,要表示成%20 。在路径的表示中,采用“/ ”来分隔目录,而且这里用的是相对路径(相对于本身的JAR 文件) 。例如: Class-Path: mail.jar activation.jar 3、包的扩展属性完成发布以后, 如果使用者想了解包的描述和实现

11、的名、版本号和提供者等信息,那么可以在 manifest 文件中添以下属性内容。Implementation-Title 定义了扩展实现的标题Implementation-Version 定义扩展实现的版本Implementation-Vendor 定义扩展实现的组织Implementation-Vendor-Id 定义扩展实现的组织的标识Implementation-URL 定义该扩展包的下载地址(URL) Specification-Title 定义扩展规范的标题Specification-Version 定义扩展规范的版本Specification-Vendor 声明了维护该规范的组织例

12、如:某清单文件manifest.mf的内容如下:Manifest-V ersion: 1.0 Created-By: 1.5.0_07 (Sun Microsystems Inc.) Main-Class: testjar.Test Specification-Title: jartest Specification-Version: 1.1 Specification-V endor: Implementation-Title: jartest Implementation-V ersion: 1.1 Implementation-V endor: 接下来了解如读取清单文件中的这些信息?Ja

13、rFile类用于从任何可以使用java.io.RandomAccessFile打开的文件中读取jar 文件的内容,读取可选的Manifest条目。因此步骤如下:生成 JarFile对象通过 JarFile对象 , 获取 Manifest对象Manifest对象的相关方法获取文件中条目的值,比如:getMainAttributes()。4、读取上述清单文件的条目实例import java.io.IOException; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.j

14、ar.JarFile; import java.util.jar.Manifest; public class GetAttributes public static void main(String args) try /test.jar 由上述 manifest.mf生成JarFile jf = new JarFile(D:codeworktest.jar); Manifest mf = jf.getManifest(); Map m = mf.getMainAttributes(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - -

15、 - - 名师精心整理 - - - - - - - 第 4 页,共 7 页 - - - - - - - - - Set s = m.entrySet(); Iterator it = s.iterator(); while (it.hasNext() System.out .println(it.next(); catch (IOException e) e.printStackTrace(); 5、包密封属性密封JAR 文件中的一个包意味着在这个包中定义的所有类都必须在同一个JAR 文件中找到。 这使包的作者可以增强打包类之间的版本一致性。密封还提供了防止代码篡改的手段。包密封需要:在JAR

16、 的 manifest 文件中添加一个Name 属性,然后加上值为“true”的 Sealed 属性。比如:Name: com/samplePackage/ Sealed: true 其中的 Name 属性标识出包的相对路径名。它以一个“/” 结束以与文件名区别。在 Name 属性后面的第一个空行之前的所有属性都作用于Name 属性所指定的文件或者包上。在上述例子中,因为Sealed 属性出现在Name 属性后并且中间没有空行,所以Sealed 属性将被解释为只应用到包com/samplePackage 上。如果试图从密封包所在的JAR 文件以外的其他地方装载密封包中的一个类,那么JVM 将抛

17、出一个SecurityException。9.3 利用 eclipse打 jar包1、利用 eclipse工具完成jar包的制作通过命令行输入命令来为应用程序打jar 包,需要输入的命令较为复杂,容易出错。接下来了解如何利用eclipse 工具方便的生成jar 包。具体步骤如下。(1)第一步右键点击项目工程,选择Export 菜单,然后弹出一个对话框,在对话框中选择Java 节点下的 JAR file 项目,然后再点击next 按钮。请见下面的操作过程的图示。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - -

18、- - - - - 第 5 页,共 7 页 - - - - - - - - - (2)第二步选择想要被打包的类文件以及jar 包存放的位置(3)第三步设置 MANIFEST.MF文件。有两种选择:默认生成MANIFEST.MF文件,并且可以保存在工作区当中。(但默认生成的文件内容只包含 Manifest-V ersion 和 Created-By 两个属性及对应的值 )。利用已有的MANIFEST.MF文件。(4)第四步最重要的一步是选择jar 文件运行的入口类。最后,点击 finish 即完成。如果有GUI 界面,则通过双击 jar 包,即可运行。2、演示利用默认生成MANIFEST.MF

19、文件打包在 Eclipse 中产生出下面的对话框双击结果:无反应,因为应用程序的正常运行,必须用到第三方jar 包( mysql 的驱动),而这个 jar 包必须在清单文件中由Class-Path 属性来指定。因此需要如下操作:(1)首先,将MANIFEST.MF文件改成Manifest-V ersion: 1.0 Main-Class: testjar.Test_jar Class-Path: ./a.jar /引入的第三方jar 包,注意:与所生成的jar 文件之间的相对路径( 2) 然 后 , 重 复 所 有 步 骤 , 并 且 选 择 修 改 后 的MANIFEST.MF文件。如图:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 7 页 - - - - - - - - - (3)点击 Finish 后双击后的执行结果如下名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁