Java 之使用 jar 命令打包 | 您所在的位置:网站首页 › java命令启动游戏 › Java 之使用 jar 命令打包 |
Java 之使用 jar 命令打包
为何打包(jar包)?为了项目的部署和发布,你的程序可能使用很多个类,把这些类和他们的目录一起压缩到一个文件中给别人,可以方便使用,通常在打包时候,会在里面加上部署的相关信息。打包实际上就是把代码和依赖的东西压缩在一起,变成后缀名为. jar包。 【jar命令和jar包(jar文件) jar 命令(也称为jar工具)是随 JDK 安装的,在 JDK 安装目录下的 bin 目录中,Windows 下文件名为 jar.exe。可以使用jar命令创建、更新、提取和列出jar文件的内容。jar包(也称为jar文件),是Java中所特有一种压缩文档,其实大家就可以把它理解为.zip包,使用ZIP査看器(如WinZip)査看它。jar文件还包含META-INF目录,用于存储包和扩展配置数据,包括安全性版本控制、扩展和服务。 如果有很多.class文件(和其它文件),散落在各层目录中,肯定不便于管理。如果能把它们打一个jar包,变成一个文件,就方便多了。】 jar包和Manifest文件 jar包(文件)就是 Java Archive File(Java档案[归档]文件),是 Java 的一种文件格式,可将多个文件组合成一个文件。一个JAR文件由一系列采用Zip压缩格式的文件构成,同时还有一张“清单(Manifest)”,对所有这些文件进行了描述。JDK提供的许多类,也是以jar包的形式提供的。 jar包用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。jar文件中有一个特定目录——META-INF,其中包含特殊的文件——MANIFEST.MF,用来定义扩展与档案打包相关数据信息,运行时向JVM提供应用程序的有关数据信息。 清单(Manifest)文件格式规则: 1.文件中的内容以键值对的形式出现,键值对之间采用"冒号和空格"进行分隔(注意:冒号后的空格必须有,不然格式有错误). 2.每行最多72个字符,换行继续必须以空格开头 。 3. Class-Path指定引用jar包的目录。调用多个jar时,每一个用空格(由一个或多个空格)隔开,不是逗号或分号,一行写不下(超过72个字符),从第二行开始,每行开头要至少一个空格。如: Class-Path: lib/tools.jar lib/guava-r09.jar lib/guice-2.0.jar lib/jakarta.commons.lang-2.2.jar 4. 文件的最后必需要空行,而且必须顶格。 更详细的说明,参考oracle提供的文档:http://docs.oracle.com/javase/1.5.0/docs/guide/jar/jar.html 一个简单的Manifest文件示例: 其中: Manifest-Version 用来定义manifest文件的版本,例如:Manifest-Version: 1.0 Created-By 声明该文件的生成者,这行信息没什么用 Main-Class 定义jar文件的入口类,如果 JAR 文件被用作可执行的应用程序,那么应用程序需要告诉 Java 虚拟机入口点位置,任意包含 public static void main(String[] args) 方法的类即为入口点。该信息由文件头 Main-Class 提供,基本格式如下: Main-Class: classname classname值可由应用程序的入口点代替。
jar 命令介绍 当我们安装好JDK,设置好path路径,就可以正常使用jar.exe命令打包了。 在cmd中,可以使用jar --help 或 ar -h 获取详细信息。 JDK9之后引入了模块化的概念,所以JDK9之后jar命令有了比较大的变化,下面JDK11中的jar命令的用法: 作为对照了解,给出JDK8中jar命令如下图: 更详细的说明,参考oracle提供的文档(其中的数字为版本号): https://docs.oracle.com/javase/8/docs/technotes/tools/windows/jar.html#exampleshttps://docs.oracle.com/en/java/javase/11/tools/jar.htmlhttps://docs.oracle.com/en/java/javase/12/docs/specs/man/jar.html 使用 jar 命令打包,事先必须编译好需要打jar的class。(eclipse一般在bin,maven构建的在target/classes) 例1、将当前目录所有的.class文件都打入 counter.jar包: jar -cvf counter.jar *.class 例2、将 bin 目录中的所有文件打入 counter.jar包: jar cvf counter.jar -C bin 例3、打包,把manifest文件插入JAR文件使用 m 选项,把指定文件名的manifest文件传入(这里是预先准备好的myapplication.mf ),用jar命令如下 jar cvfm myapplication.jar myapplication.mf -C classdir 将 -C classdir指定的路径下的全部内容,生成名为myapplication.jar的包,并将清单文件myapplication.mf的内容提取到META-INF/MANIFEST.MF文件中 打包成可运行的jar包,可直接通过命令“java -jar jar文件名”运行这个jar包 或 用记事本编写一个批处理文件(扩展名为bat),内容为:java -jar pigGame.jar 如想不显示(隐藏)黑窗口运行jar,批处理命令文件内容为:@start javaw -jar jar文件名运双击批处理文件即可运行jar文件了。 要打包成可运行的jar包,需要在MANIFEST.MF文件中使用Main-Class 指明 入口类(主类)。 附录 使用Eclipse导出向导生成jar包 可参见 https://blog.csdn.net/cnds123/article/details/80463293 |
CopyRight 2018-2019 实验室设备网 版权所有 |