jar 命令实践

jar -h非法选项: h
用法: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...
选项:-c  创建新档案-t  列出档案目录-x  从档案中提取指定的 (或所有) 文件-u  更新现有档案-v  在标准输出中生成详细输出-f  指定档案文件名-m  包含指定清单文件中的清单信息-n  创建新档案后执行 Pack200 规范化-e  为捆绑到可执行 jar 文件的独立应用程序指定应用程序入口点-0  仅存储; 不使用任何 ZIP 压缩-P  保留文件名中的前导 '/' (绝对路径) 和 ".." (父目录) 组件-M  不创建条目的清单文件-i  为指定的 jar 文件生成索引信息-C  更改为指定的目录并包含以下文件
如果任何文件为目录, 则对其进行递归处理。
清单文件名, 档案文件名和入口点名称的指定顺序
与 'm', 'f' 和 'e' 标记的指定顺序相同。示例 1: 将两个类文件归档到一个名为 classes.jar 的档案中:jar cvf classes.jar Foo.class Bar.class
示例 2: 使用现有的清单文件 'mymanifest' 并将 foo/ 目录中的所有文件归档到 'classes.jar' 中:jar cvfm classes.jar mymanifest -C foo/ .

一、指令注意点

1、jar后面的{ctxui}[vfmn0PMe]在书写时不要加短横线-,只有-C可以用短横线-,否则会报错;

2、jar后面的{ctxui}[vfmn0PMe]不可以分开写,否则会报错;

3、{ctxui}这四个参数必须选其一,[vfmn0PMe]是可选参数,文件名也是必须的;

4、m 后面必须接指定的清单文件, M表示不创建清单文件;

5、清单文件名, 档案文件名和入口点名称的顺序,必须和'm', 'f' 和 'e' 标记的指定顺序相同;

6、-C 后接目录,表示只对目录下的文件进行打包, -C 目录/ . 其中点.表示目录下任何文件,如果想打包目录下的指定某些文件,则需要一一列出文件的全路径名称;

7、不使用-C时,jar指令后需要列出需要打包的文件;

8、files ... 代表一个文件或多个文件;

9、e 指定可运行jar包的入口点,该入口点必须是全路径名,比如com.crland.Welcome;

二、实践

1、工程目录

package com.crland;public class Welcome {public static void main(String[] args) {Teacher.greeting();}
}
package com.crland;public class Teacher {public static void greeting() {System.out.println("welcome xiaoliu");}
}

        

2、编辑源文件

         编译源文件需要使用javac命令,首先进入到工程目录,然后使用javac命令:

E:\codes\idea\HelloCode\testjar> javac -d out -sourcepath src .\src\main\java\com\crland\Teacher.java .\src\main\java\com\crland\Welcome.java

        命令执行完后,会在out目录下生成class类文件

        可以看到,生成的class文件也是按照原有的包目录的组织的。 

        先简单看下javac命令的用法:

用法: javac <options> <source files>
其中, 可能的选项包括:-g                         生成所有调试信息-g:none                    不生成任何调试信息-g:{lines,vars,source}     只生成某些调试信息-nowarn                    不生成任何警告-verbose                   输出有关编译器正在执行的操作的消息-deprecation               输出使用已过时的 API 的源位置-classpath <路径>            指定查找用户类文件和注释处理程序的位置-cp <路径>                   指定查找用户类文件和注释处理程序的位置-sourcepath <路径>           指定查找输入源文件的位置-bootclasspath <路径>        覆盖引导类文件的位置-extdirs <目录>              覆盖所安装扩展的位置-endorseddirs <目录>         覆盖签名的标准路径的位置-proc:{none,only}          控制是否执行注释处理和/或编译。-processor <class1>[,<class2>,<class3>...] 要运行的注释处理程序的名称; 绕过默认的搜索进程-processorpath <路径>        指定查找注释处理程序的位置-parameters                生成元数据以用于方法参数的反射-d <目录>                    指定放置生成的类文件的位置-s <目录>                    指定放置生成的源文件的位置-h <目录>                    指定放置生成的本机标头文件的位置-implicit:{none,class}     指定是否为隐式引用文件生成类文件-encoding <编码>             指定源文件使用的字符编码-source <发行版>              提供与指定发行版的源兼容性-target <发行版>              生成特定 VM 版本的类文件-profile <配置文件>            请确保使用的 API 在指定的配置文件中可用-version                   版本信息-help                      输出标准选项的提要-A关键字[=值]                  传递给注释处理程序的选项-X                         输出非标准选项的提要-J<标记>                     直接将 <标记> 传递给运行时系统-Werror                    出现警告时终止编译@<文件名>                     从文件读取选项和文件名

3、打包字节码文件

1、打包所有字节码文件并提供入口点,打包成可执行的jar包

E:\codes\idea\HelloCode\testjar> jar vcfe test1.jar com.crland.Welcome -C out/ . 
已添加清单
正在添加: com/(输入 = 0) (输出 = 0)(存储了 0%)
正在添加: com/crland/(输入 = 0) (输出 = 0)(存储了 0%)
正在添加: com/crland/Teacher.class(输入 = 413) (输出 = 293)(压缩了 29%)
正在添加: com/crland/Welcome.class(输入 = 322) (输出 = 237)(压缩了 26%)

        打包结果如下:

         把test1.jar复制到其他目录,然后使用java命令运行jar包,可执行:

C:\Users\liuqinhou\Desktop\test> java -jar .\test1.jar
welcome xiaoliu

        可以看到,jar包执行成功了。

注意点:

1、fe参数的顺序需要和test1.jar com.crland.Welcome的顺序保持一致才行。

2、最后的点.表示要打包out目录下所有文件

2、如果只想打包目录下指定文件,则需要在命令最后指定文件路径

 E:\codes\idea\HelloCode\testjar> jar vcfe test2.jar com.crland.Welcome -C out/ com/crland/Welcome.class

        上面指令就是只打包out/目录下的com/crland/Welcom.class文件,打包结果为:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/10088.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式软件—RK3568开发环境搭建

一、RK3568 1.1 开发板特点 BSP比较大&#xff0c;对于电脑内存和存储空间要求高 1.2 BSP BSP&#xff08;Board Support Package&#xff0c;板级支持包&#xff09;&#xff0c;类似于PC系统中BIOS和驱动程序的集合&#xff0c;BSP包含的范围更广&#xff0c;除了外设驱动…

数值线性代数:知识框架

记录数值线性代数研究的知识框架。 软件包线性方程组直接法Guass消元法/LU分解、Cholesky分解 LAPACK oneAPI MKL ARPACK Octave 迭代法Jacobi迭代、SOR迭代、共轭梯度法最小二乘特征值/特征向量非对称幂法、QR、Arnoldi分解对称QR、Jacobi、二分法、分治法、SVD 参考资料 G…

noVNC安装部署

首先得确保你的vnc是管用的 然后再下面这一大堆地址随便下载一套noVNC的代码 git clone https://github.com/novnc/noVNC.git git clone git://github.com/kanaka/noVNC noVNC官网&#xff1a;noVNC noVNC Github&#xff1a;GitHub - novnc/noVNC: VNC client web applicatio…

pg三种插件验证

sr_plan 创建extension, 他会创建保留执行计划的表 创建表并插入数据 开启sr_plan.write_mode, 允许sr_plan收集SQL和执行计划 查看QUERY 1的执行计划 PostgreSQL支持merge join、GroupAggregate(通过INDEX SCAN),所以这个CASE,非常快,并不需要b对所有数据进行聚合。查看…

nginx mirror代码分析

实现方式 mirror逻辑的工作阶段&#xff1a; ngx在log phase之后&#xff08;在ngx_http_free_request处调用&#xff09;已完成向client端返回response&#xff0c;在log phase之后完成close connection&#xff08;短链接&#xff09;&#xff0c;在该阶段处理mirror逻辑不…

Python——Windows下载ffmpeg

目录 前言 一、下载 &#xff08;3种下载方式&#xff09; 1、第一种下载方式——我上传的文件 2、第二种下载方式——GitHub下载 3、第三种下载方式——官网下载 二、解压 三、配置环境变量 四、验证是否安装成功 五、其他 关于ffmpeg其他安装教程 ffmpeg的延迟问题 …

vscode保存html时,如何不换行?

我发现网上的答案都是千篇一律&#xff0c;都是复制过来的 "vetur.format.defaultFormatterOptions": {"js-beautify-html": {"wrap_line_length": 120,"wrap_attributes": "auto","end_with_newline": false}, …

typescript自动编译文件实时更新

npm install -g typescripttsc --init 生成tsconfig.json配置文件 tsc -w 在监听模式下运行&#xff0c;当文件发生改变的时候自动编译

C语言文件操作

目录 前言: 文件的分类 1. 程序文件 2.数据文件 文件的使用 文件指针 文件指针的使用 文件的打开与关闭 文件的使用方式 示例1&#xff1a; 示例2&#xff1a; 文件的顺序读写 函数简介 示例1&#xff1a; 示例2&#xff1a; 函数简介 示例1&#xff1a; 示例2&…

【我们一起60天准备考研算法面试(大全)-第二十六天 26/60】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

linux获取随机字符串(或数字)的3种方法

1. 获取随机8位字符串&#xff1a; 方法1&#xff1a; # echo $RANDOM |md5sum |cut -c 1-8返回&#xff1a; 471b94f2方法2&#xff1a; # openssl rand -base64 4返回 vg3BEg方法3&#xff1a; # cat /proc/sys/kernel/random/uuid |cut -c 1-8返回 】ed9e032c2.获取随…

【什么是Read Write Through机制】

文章目录 一、Read-Write Through机制的定义二、Read-Write Through机制的特点三、Read-Write Through机制的实现方式四、Read-Write Through机制的应用场景 Read-Write Through机制是一种缓存一致性协议&#xff0c;用于保证存储子系统的缓存与主存储器之间的数据一致性。它是…

NAT详解(网络地址转换)

一句话说清楚它是干什么的&#xff1a; 网络地址转换&#xff1a;是指通过专用网络地址转换为公用地址&#xff0c;从而对外隐藏内部管理的IP地址&#xff0c;它使得整个专用网只需要一个全球IP就可以访问互联网&#xff0c;由于专用网IP地址是可以重用的&#xff0c;所以NAT大…

【Linux】Http协议的学习

文章目录 前言一、了解HTTP协议是如何规定的总结 前言 HTTP协议&#xff08;超文本传输协议&#xff09;和我们上一篇写的网络版计算器中自己定制的协议一样&#xff0c;只不过Http协议是是一个非常好用的协议&#xff0c;所以我们可以直接用现成的不用自己再搞一套了。 一、了…

EM算法实例

EM算法的E步骤&#xff0c; 是计算在当前的预估参数下&#xff0c;隐含变量&#xff08;是A硬币还是B硬币&#xff09;的每个值出现的概率。也就是给定和观测数据&#xff0c;计算这组数据出自A硬币的概率和这组数据出自B硬币的概率 我们根据E步中求出的A硬币、B硬币概率分布&…

在家构建您的迷你 ChatGPT

这篇文章分为三个部分&#xff1b;他们是&#xff1a; 什么是指令遵循模型&#xff1f;如何查找遵循模型的指令构建一个简单的聊天机器人废话不多说直接开始吧&#xff01;&#xff01;&#xff01; 什么是指令遵循模型&#xff1f; 语言模型是机器学习模型&#xff0c;可以根…

tp6 实现excel 导入功能

在项目根目录安装 composer require phpoffice/phpspreadsheet 我们看一下郊果图&#xff0c;如下 点击导入excel表格数据 出现弹窗选择文件&#xff0c;控制台打开输出文档内容 前端layui代码 <form id"uploadForm" class"form-horizontal" encty…

c#数据类型:15种数据类型类型(13种基本数据类型,2种引用类型)

数据类型分为基本数据类型和引用数据类型 c#中,基本数据类型有13个,引用数据类型有两个 值类型整型名称命名空间说明范围8个byteSystem.Byte8位无符号整型0-255sbyteSystem.sbyte8位有符号整型-128-127intSystem.int3232位有符号整型uintsystem.uint3232位无符号整型shortsys…

如何使用 Flatpak 在 Linux 上安装 ONLYOFFICE 桌面编辑器?

Flatpak 是一款与 Linux 发行版无关的软件实用工具&#xff0c;可用于在 Linux 上构建和分发桌面端应用。其可帮助您安装第三方 Linux 应用程序&#xff0c;无需安装库或处理依赖。 ONLYOFFICE 桌面版是什么 ONLYOFFICE 编辑器桌面版是一款全面的办公工具&#xff0c;提供了文…

Java_24_Lambda表达式

Lambda表达式 简化匿名内部类的&#xff01;&#xff01; 什么是Lambda表达式&#xff1f; Lambda表达式是JDK1.8开始之后的新技术&#xff0c;是一种代码的新语法。 是一种特殊写法&#xff0c; 作用&#xff1a;“核心目的是为了简化匿名内部类的代码写法”。 Lambda表达式…