小工具知识网

当前位置: 首页 > 行业知识 > 总结:利用JDK原生命令,制作可执行jar包与依赖jar包

行业知识

总结:利用JDK原生命令,制作可执行jar包与依赖jar包

2026-10-25 19:23:34 来源:互联网转载

总结:利用JDK原生命令,制作可执行jar包与依赖jar包

  • 一·什么是jar包?
  • 二·制作jar包的工具:JDK原生自带的jar命令
    • (1)jar命令注意事项:
    • (2)jar包清单文件创建示例:MANIFEST.MF文件,最后一行必须是空行(在输完你的内容后加一个回车就OK)
    • (3)jar命令的运用详情链接地址:
    • 三·执行jar包的命令方式:JDK原生自带java命令
    • 四·制作依赖jar包:清单文件视情况自定义创建
      • 1.需要打成jar包的class文件,没有依赖外部jar包,也没有手动创建清单文件。制作示例如下:
        • (1)先创建两个类:Hello、Hello2
        • (2)将java文件编译为class文件
        • (3)打开控制台,进入顶层包名所在目录下面
        • (4)使用jdk自带的jar命令,进行打包
        • (5)将jar包解压缩查看层次结构
        • (6)将jar包拿到其他项目当作依赖包使用:成功!
        • 2.需要打成jar包的class文件,有依赖外部jar包,则必须手动创建清单文件MANIFEST.MF,制作示例如下
          • (1)创建一个Hello3类
          • (2)编译为class文件
          • (3)手动创建清单文件MANIFEST.MF,位置自定义。清单文件中必须存在Class-Path属性,指明该包里面的类依赖外部jar包的相对路径(相对主jar包所在目录),多个jar包路径就空格隔开。该路径也可以自定义设置,但也不建议太随意
            • (3-1)Class-Path属性后面的所有jar包相对路径,都不能从斜杠“/”开始
            • (3-2)如果清单文件中存在多个Class-Path属性值,则最后生成jar包里面的清单文件只会保留最下面出现的Class-Path属性值,上面的自动忽略掉
            • (3-3)Class-Path属性后面的所有jar包相对路径,是相对于主jar包(即:你最终代码文件生成jar包)所放置目录的。在主jar包所在目录后面,继续拼接上Class-Path属性指定的相对路径,这样形成的路径才是完整的jar包引入路径。
            • (3-4)因此外部jar包没有必要在打包的时候又封装进去,即使你封装进去,也不会生效的。因为打包之后,里面封装的各种文件所在目录永远是主jar包所在目录的子目录,这样虚拟机就永远找不到jar包加载路径。
            • (3-5)一旦存在外部jar包依赖,该jar就不能独立使用,需要结合依赖的外部jar包且外部jar包必须存放在Class-Path属性指定的相对目录下面,这样才能正确使用,否则就容易报找不到具体类异常
            • (3-6)MANIFEST.MF文件,第一行不可以是空行( 第一行的行前不可以有空行),行与行之间不能有空行,每行的行尾不可以有空格
            • (3-7)MANIFEST.MF文件,最后一行必须是空行(在输完你的内容后加一个回车就OK)
            • (3-8)MANIFEST.MF文件,分号后面一定要有空格:
            • (4)打开控制台,进入顶层包名所在目录下面
            • (5)使用jdk自带的jar命令,进行打包
            • (6)将jar包解压缩查看层次结构
            • (7)将jar包拿到其他项目当作依赖包使用,注意在指定目录下引入其他jar包:成功!
            • 五·制作可执行jar包:清单文件必须自定义创建
              • (1)先创建Hello4类
              • (2)编译成class文件
                • (3)手动创建清单文件MANIFEST.MF,位置自定义。清单文件中必须存在Main-Class属性,指明主程序类路径,从顶层包名开始
                  • (3-1)MANIFEST.MF文件,第一行不可以是空行( 第一行的行前不可以有空行),行与行之间不能有空行,每行的行尾不可以有空格
                  • (3-2)MANIFEST.MF文件,最后一行必须是空行(在输完你的内容后加一个回车就OK)
                  • (3-3)MANIFEST.MF文件,分号后面一定要有空格:
                  • (4)打开控制台,进入顶层包名所在目录下面
                  • (5)使用jdk自带的jar命令,进行打包
                  • (6)将jar包解压缩查看层次结构
                  • (7)使用JDK原生自带命令,执行jar包:成功!

                    一·什么是jar包?

                    JAR(Java Archive)是Java开发中常用的一种文件格式。它是一种归档文件,用于将多个Java类文件、资源文件和元数据打包成一个单独的文件。JAR文件通常用于分发和部署Java应用程序和库。  JAR包可以包含编译后的Java类文件(.class文件)、配置文件、图像、音频文件等资源,以及描述这些文件的元数据信息。JAR包还可以包含清单文件(Manifest),用于指定JAR包的属性和配置信息。  JAR包具有压缩功能,可以将多个文件压缩成一个较小的文件,以便更方便地传输和存储。它还提供了方便的类加载和资源访问机制,使得Java应用程序可以轻松地使用JAR包中的类和资源。 

                    综上所述:jar包就是将一系列Java开发文件压缩成归档包,方便代码文件管理、传输与部署等等

                    二·制作jar包的工具:JDK原生自带的jar命令

                    用法: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...名词解释:   {ctxui}:执行jar命令的必选参数,每次执行jar命令必须至少选择一个参数[vfmn0PMe]:执行jar命令的可选项参数,每次执行jar命令可选可不选[jar-file]:最终生成jar包输出路径及jar包名称[manifest-file]:生成jar包使用的清单文件路径[entry-point]:程序执行入口[-C dir]:跳转到指定目录下面执行jar命令files:需要打包文件所在目录路径选项:    -c  创建新档案    -t  列出档案目录    -x  从档案中提取指定的 (或所有) 文件    -u  更新现有档案    -v  在标准输出中生成详细输出    -f  指定档案文件名    -m  包含指定清单文件中的清单信息    -n  创建新档案后执行 Pack200 规范化    -e  为捆绑到可执行 jar 文件的独立应用程序        指定应用程序入口点    -0  仅存储; 不使用任何 ZIP 压缩    -P  保留文件名中的前导 '/' (绝对路径) 和 ".." (父目录) 组件    -M  不创建条目的清单文件    -i  为指定的 jar 文件生成索引信息    -C  更改为指定的目录并包含以下文件    

                    (1)jar命令注意事项:

                    (1)如果任何文件为目录, 则对其进行递归处理。(2)清单文件名, 档案文件名和入口点名称的指定顺序与'm', 'f' 和 'e' 标记的指定顺序相同。(3)清单文件名一般就两种固定名称,不允许随意修改文件名称:MANIFEST.MF、manifest.txt示例 1: 将当前目录下面的所有文件归档到一个名为 classes.jar 的档案中:        jar cvf classes.jar .       示例 2: 使用现有的清单文件 'mymanifest' 并将 foo/ 目录中的所有文件归档到 'classes.jar' 中:        jar cvfm classes.jar mymanifest -C foo/ .

                    (2)jar包清单文件创建示例:MANIFEST.MF文件,最后一行必须是空行(在输完你的内容后加一个回车就OK)

                    Manifest-Version: 1.0Created-By: 1.8.0_361 (Oracle Corporation)Class-Path: lib/fastjson.jar lib/hello.jarMain-Class: test.Hello

                    (3)jar命令的运用详情链接地址:

                    https://www.cnblogs.com/liyanbin/p/6088458.html

                    三·执行jar包的命令方式:JDK原生自带java命令

                    注意:需要该jar包的确可以执行才行,否则执行了命令也不生效

                    java -jar jar包路径例如:java -jar /Users/ideal/Desktop/untitled-test/out/production/untitled-test/hello4.jarjava -jar ./hello2.jar

                    四·制作依赖jar包:清单文件视情况自定义创建

                    1.需要打成jar包的class文件,没有依赖外部jar包,也没有手动创建清单文件。制作示例如下:

                    (1)先创建两个类:Hello、Hello2

                    (2)将java文件编译为class文件

                    (3)打开控制台,进入顶层包名所在目录下面

                    (4)使用jdk自带的jar命令,进行打包

                    命令格式(参数具体详情看文章最上面介绍):jar cvf/-cvf 自定义jar包名称 需要打包的class文件目录例如本次示例:(4-1)生成jar包时,自动生成一个默认清单文件:jar cvf hello.jar ./test(4-2)生成jar包时,不生成一个默认清单文件:jar cvfM hello.jar ./test

                    (4-1)方式一:生成jar包时,自动生成一个默认清单文件:

                    jar cvf hello.jar ./test

                    (4-2)方式二:生成jar包时,不生成一个默认清单文件:

                    jar cvfM hello.jar ./test

                    (5)将jar包解压缩查看层次结构

                    (5-1)有默认清单文件的jar包

                    (5-2)无默认清单文件的jar包

                    (6)将jar包拿到其他项目当作依赖包使用:成功!

                    2.需要打成jar包的class文件,有依赖外部jar包,则必须手动创建清单文件MANIFEST.MF,制作示例如下

                    (1)创建一个Hello3类

                    (2)编译为class文件

                    (3)手动创建清单文件MANIFEST.MF,位置自定义。清单文件中必须存在Class-Path属性,指明该包里面的类依赖外部jar包的相对路径(相对主jar包所在目录),多个jar包路径就空格隔开。该路径也可以自定义设置,但也不建议太随意

                    (3-1)Class-Path属性后面的所有jar包相对路径,都不能从斜杠“/”开始
                    (3-2)如果清单文件中存在多个Class-Path属性值,则最后生成jar包里面的清单文件只会保留最下面出现的Class-Path属性值,上面的自动忽略掉
                    (3-3)Class-Path属性后面的所有jar包相对路径,是相对于主jar包(即:你最终代码文件生成jar包)所放置目录的。在主jar包所在目录后面,继续拼接上Class-Path属性指定的相对路径,这样形成的路径才是完整的jar包引入路径。
                    (3-4)因此外部jar包没有必要在打包的时候又封装进去,即使你封装进去,也不会生效的。因为打包之后,里面封装的各种文件所在目录永远是主jar包所在目录的子目录,这样虚拟机就永远找不到jar包加载路径。
                    (3-5)一旦存在外部jar包依赖,该jar就不能独立使用,需要结合依赖的外部jar包且外部jar包必须存放在Class-Path属性指定的相对目录下面,这样才能正确使用,否则就容易报找不到具体类异常
                    (3-6)MANIFEST.MF文件,第一行不可以是空行( 第一行的行前不可以有空行),行与行之间不能有空行,每行的行尾不可以有空格
                    (3-7)MANIFEST.MF文件,最后一行必须是空行(在输完你的内容后加一个回车就OK)
                    (3-8)MANIFEST.MF文件,分号后面一定要有空格:
                    key: value       在分号后面一定要写写一个空格

                    MANIFEST.MF文件内容示例

                    Manifest-Version: 1.0Created-By: 1.8.0_361 (Oracle Corporation)Class-Path: msdev/lmf/lib/fastjson.jar msdev/lmf/lib/hello.jar

                    (4)打开控制台,进入顶层包名所在目录下面

                    (5)使用jdk自带的jar命令,进行打包

                    jar cvfm hello3.jar /Users/ideal/Desktop/untitled-test/web/WEB-INF/MANIFEST.MF .

                    (6)将jar包解压缩查看层次结构

                    (7)将jar包拿到其他项目当作依赖包使用,注意在指定目录下引入其他jar包:成功!

                    五·制作可执行jar包:清单文件必须自定义创建

                    (1)先创建Hello4类

                    (2)编译成class文件

                    (3)手动创建清单文件MANIFEST.MF,位置自定义。清单文件中必须存在Main-Class属性,指明主程序类路径,从顶层包名开始

                    (3-1)MANIFEST.MF文件,第一行不可以是空行( 第一行的行前不可以有空行),行与行之间不能有空行,每行的行尾不可以有空格
                    (3-2)MANIFEST.MF文件,最后一行必须是空行(在输完你的内容后加一个回车就OK)
                    (3-3)MANIFEST.MF文件,分号后面一定要有空格:
                    key: value       在分号后面一定要写写一个空格

                    MANIFEST.MF文件内容示例

                    Manifest-Version: 1.0Created-By: 1.8.0_361 (Oracle Corporation)Main-Class: test.Hello4

                    (4)打开控制台,进入顶层包名所在目录下面

                    (5)使用jdk自带的jar命令,进行打包

                    jar cvfm hello4.jar /Users/ideal/Desktop/untitled-test/web/WEB-INF/MANIFEST.MF .

                    (6)将jar包解压缩查看层次结构

                    (7)使用JDK原生自带命令,执行jar包:成功!

                    java -jar ./hello4.jar

上一篇:织梦数据库查询方法与技巧深度解析

下一篇:Android Banner源码解析与实现,揭秘核心功能与实现细节