苏州手机网站建设多少钱,十大教育培训机构排名,广东品牌网站建设报价,广州网络营销品牌总结#xff1a;利用JDK原生命令#xff0c;制作可执行jar包与依赖jar包 一什么是jar包#xff1f;二制作jar包的工具#xff1a;JDK原生自带的jar命令#xff08;1#xff09;jar命令注意事项#xff1a;#xff08;2#xff09;jar包清单文件创建示例#xff1a;利用JDK原生命令制作可执行jar包与依赖jar包 一·什么是jar包二·制作jar包的工具JDK原生自带的jar命令1jar命令注意事项2jar包清单文件创建示例3jar命令的运用详情链接地址 三·执行jar包的命令方式JDK原生自带java命令四·制作依赖jar包清单文件视情况自定义创建1.需要打成jar包的class文件没有依赖外部jar包也没有手动创建清单文件。制作示例如下1先创建两个类Hello、Hello22将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-1Class-Path属性后面的所有jar包相对路径都不能从斜杠“/”开始3-2如果清单文件中存在多个Class-Path属性值则最后生成jar包里面的清单文件只会保留最下面出现的Class-Path属性值上面的自动忽略掉3-3Class-Path属性后面的所有jar包相对路径是相对于主jar包即你最终代码文件生成jar包所放置目录的。在主jar包所在目录后面继续拼接上Class-Path属性指定的相对路径这样形成的路径才是完整的jar包引入路径。3-4因此外部jar包没有必要在打包的时候又封装进去即使你封装进去也不会生效的。因为打包之后里面封装的各种文件所在目录永远是主jar包所在目录的子目录这样虚拟机就永远找不到jar包加载路径。3-5一旦存在外部jar包依赖该jar就不能独立使用需要结合依赖的外部jar包且外部jar包必须存放在Class-Path属性指定的相对目录下面这样才能正确使用否则就容易报找不到具体类异常3-6MANIFEST.MF文件第一行不可以是空行( 第一行的行前不可以有空行)行与行之间不能有空行每行的行尾不可以有空格3-7MANIFEST.MF文件最后一行必须是空行(在输完你的内容后加一个回车就OK)3-8MANIFEST.MF文件分号后面一定要有空格 4打开控制台进入顶层包名所在目录下面5使用jdk自带的jar命令进行打包6将jar包解压缩查看层次结构7将jar包拿到其他项目当作依赖包使用注意在指定目录下引入其他jar包成功 五·制作可执行jar包清单文件必须自定义创建1先创建Hello4类2编译成class文件3手动创建清单文件MANIFEST.MF位置自定义。清单文件中必须存在Main-Class属性指明主程序类路径从顶层包名开始3-1MANIFEST.MF文件第一行不可以是空行( 第一行的行前不可以有空行)行与行之间不能有空行每行的行尾不可以有空格3-2MANIFEST.MF文件最后一行必须是空行(在输完你的内容后加一个回车就OK)3-3MANIFEST.MF文件分号后面一定要有空格 4打开控制台进入顶层包名所在目录下面5使用jdk自带的jar命令进行打包6将jar包解压缩查看层次结构7使用JDK原生自带命令执行jar包成功 一·什么是jar包
JARJava 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 更改为指定的目录并包含以下文件
1jar命令注意事项
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/ .2jar包清单文件创建示例
Manifest-Version: 1.0
Created-By: 1.8.0_361 (Oracle Corporation)
Class-Path: lib/fastjson.jar lib/hello.jar
Main-Class: test.Hello3jar命令的运用详情链接地址
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.jar
java -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 ./test4-1方式一生成jar包时自动生成一个默认清单文件
jar cvf hello.jar ./test4-2方式二生成jar包时不生成一个默认清单文件
jar cvfM hello.jar ./test5将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-1Class-Path属性后面的所有jar包相对路径都不能从斜杠“/”开始
3-2如果清单文件中存在多个Class-Path属性值则最后生成jar包里面的清单文件只会保留最下面出现的Class-Path属性值上面的自动忽略掉
3-3Class-Path属性后面的所有jar包相对路径是相对于主jar包即你最终代码文件生成jar包所放置目录的。在主jar包所在目录后面继续拼接上Class-Path属性指定的相对路径这样形成的路径才是完整的jar包引入路径。
3-4因此外部jar包没有必要在打包的时候又封装进去即使你封装进去也不会生效的。因为打包之后里面封装的各种文件所在目录永远是主jar包所在目录的子目录这样虚拟机就永远找不到jar包加载路径。
3-5一旦存在外部jar包依赖该jar就不能独立使用需要结合依赖的外部jar包且外部jar包必须存放在Class-Path属性指定的相对目录下面这样才能正确使用否则就容易报找不到具体类异常
3-6MANIFEST.MF文件第一行不可以是空行( 第一行的行前不可以有空行)行与行之间不能有空行每行的行尾不可以有空格
3-7MANIFEST.MF文件最后一行必须是空行(在输完你的内容后加一个回车就OK)
3-8MANIFEST.MF文件分号后面一定要有空格
key: value 在分号后面一定要写写一个空格MANIFEST.MF文件内容示例
Manifest-Version: 1.0
Created-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-1MANIFEST.MF文件第一行不可以是空行( 第一行的行前不可以有空行)行与行之间不能有空行每行的行尾不可以有空格
3-2MANIFEST.MF文件最后一行必须是空行(在输完你的内容后加一个回车就OK)
3-3MANIFEST.MF文件分号后面一定要有空格
key: value 在分号后面一定要写写一个空格MANIFEST.MF文件内容示例
Manifest-Version: 1.0
Created-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