jar 命令简介(一)

jar命令使用
这是给学生作的,哈!他们说这个命令满难懂所以全程图片
jar 命令用途:采用zip和ZLIB的压缩格式,将一系列程序相关的文件压缩为一个文件。
优点:
1)  加快Applet的下载速度。
2)  提高控件下载的安全性,因为所有的文件均在一个文件中,这样不会有不明文件,jar文件的压缩包包含jar文件结构信息,它包存在META-INF/MANIFEST.MF文件。该文件可以用来指明主类(main class)
jar 命令使用如下:
1.  察看jar 命令参数:

2.参数详细解释:
-c:
用途:创建一个新的jar文件,该参数要和-f参数一起使用,f参数用于指明文件名。
源程序如下:
package love.com.cn;
class A {}
class B {}
class C {}
class D {}
public class U {
       public static void main(String args[]) {
              System.out.println("Hello java.jar");
       }
}
编译过后生成字节码:
然后使用
(注:*.*代表全部文件)
就可以在当前目录中得到一个名字叫作hello.jar的jar文件,用winrar察看内容:
-t:
用途:列出jar文件里面所包括的文件。
-f:
用途:指明创建的jar文件的名字。每一个参数后均要加上f参数。
-x:
用途:将jar文件解压缩(我把hello.jar拷贝到c:/test中)
运行命令:
可以察看c:/test中的改变:
-v
用途:显示jar文件更详细的信息,可以在每个参数的后面直接加上参数v
对比 –tf 来说显示信息更加详细
-m:
用途:创建jar文件时,定义jar文件的结构信息,如:主类。
例子:
第一步:打开记事本编辑一个文件in(文件名随意,但是不能有后缀)
注意:冒号和 love.com.cn.U之间有空格(一定要有),还有文件必须以空行结束,如果忽略的话不能正常的添加
第二步:使用命令
第三步:解压缩hello.jar 你会发现MANIFEST.MF内容有所改变
第四步:
当然你也可以编辑一个后缀是 .bat 的批处理文件(文件名随便)
内容如下:
执行.bat文件
当然也可以双击图标执行但是,结果一下子就消失了!如果有Frame之类的就好了!
 
 
 
 
<think>我们正在讨论的是JAR命令的使用方法。根据引用内容,JAR命令是Java开发工具包(JDK)中提供的个工具,用于创建、查看、更新和解压JAR文件(Java归档文件)。JAR文件本质上是ZIP格式的压缩文件,通常用于分发Java类库和应用程序。 用户的问题集中在JAR命令的使用方法上,我们将从以下几个方面进行说明: 1. JAR命令的基本语法 2. 常用子命令(创建、查看、更新、解压)的用法 3. 常用选项(如指定文件名、生成详细输出、指定清单文件等) 4. 使用示例 根据引用内容,我们整理如下: JAR命令基本语法: 引用[1]和引用[3]提供了两种格式,但本质相同: jar {c t x u f} [选项] [jar文件] [清单文件] [目录] [-C 目录] 文件名... 其中: {c t x u} 是必须且只能选个的子命令: c: 创建新的JAR文件 t: 列出JAR文件的内容 x: 从JAR文件中提取文件(解压) u: 更新现有的JAR文件 f: 指定JAR文件名(通常必须提供) [选项] 包括: v: 在标准输出中生成详细输出 m: 包含指定清单文件(MANIFEST.MF) 0: 仅存储,不压缩(加快速度,但文件较大) M: 不创建清单文件(MANIFEST.MF) i: 为指定的JAR文件生成索引信息 C: 在执行命令期间更改到指定目录 二、常用操作示例: 1. 创建JAR文件(包含详细输出): 命令jar cvf jar文件名 文件或目录... 示例:jar cvf myapp.jar MyClass.class MyResource.txt 说明:将MyClass.class和MyResource.txt打包到myapp.jar中,并显示详细过程。 2. 创建JAR文件并指定清单文件(MANIFEST.MF): 命令jar cvfm jar文件名 清单文件名 文件或目录... 示例:jar cvfm myapp.jar manifest.mf -C classes/ . 说明:使用manifest.mf作为清单文件,并将classes目录下的所有文件(包括子目录)打包到myapp.jar中。注意:-C classes/ . 表示先切换到classes目录,然后打包当前目录(即classes)下的所有文件。 3. 查看JAR文件内容: 命令jar tf jar文件名 示例:jar tf myapp.jar 说明:列出myapp.jar中的所有文件。 4. 查看JAR文件内容(详细输出): 命令jar tvf jar文件名 示例:jar tvf myapp.jar 说明:以详细模式(显示文件大小、日期等)列出myapp.jar中的文件。 5. 解压JAR文件: 命令jar xf jar文件名 示例:jar xf myapp.jar 说明:将myapp.jar中的所有文件解压到当前目录。 6. 解压JAR文件(显示详细输出): 命令jar xvf jar文件名 示例:jar xvf myapp.jar 说明:解压并显示解压过程。 7. 更新JAR文件(添加文件): 命令jar uf jar文件名 要添加的文件 示例:jar uf myapp.jar NewClass.class 说明:将NewClass.class添加到已有的myapp.jar中。 8. 更新JAR文件并指定清单文件: 命令jar ufm jar文件名 清单文件名 示例:jar ufm myapp.jar manifest-update.mf 说明:更新JAR文件的清单文件。 9. 创建不压缩的JAR文件(使用-0选项): 命令jar cvf0 jar文件名 文件或目录 示例:jar cvf0 myapp.jar * 说明:打包当前目录下所有文件,不进行压缩。 10. 生成索引文件(使用-i选项): 命令jar i jar文件名 示例:jar i myapp.jar 说明:为myapp.jar生成索引文件INDEX.LIST,该文件位于META-INF目录下,用于加速类加载。 三、注意事项: - 在创建JAR文件时,如果指定了-m选项,那么清单文件必须存在,否则会报错。 - 使用-C选项可以改变当前目录,这样可以将不同目录下的文件打包到JAR文件中的指定路径。 - 解压时,JAR文件中的目录结构会被保留。 四、使用场景: - 打包Java应用程序(包含主类信息在清单文件中)以便分发。 - 打包Java类库供其他项目使用。 - 作为压缩工具使用(类似于ZIP,但具有Java特定的元数据功能)。 根据引用[4],解压JAR包有两种方式:带详细输出和不带详细输出。 下面我们通过个综合示例来展示如何打包个包含多个目录的Java应用程序: 假设我们有以下目录结构: project/ src/ # 源代码目录 classes/ # 编译后的类文件 lib/ # 依赖库 resources/ # 资源文件 我们要将classes目录和resources目录下的文件打包成JAR文件,并且指定清单文件(包含主类信息)。 步骤: 1. 准备清单文件manifest.mf,内容如下(注意:最后行必须是空行): Main-Class: com.example.Main Class-Path: lib/dependency1.jar lib/dependency2.jar 2. 执行打包命令(在project目录下): jar cvfm app.jar manifest.mf -C classes/ . -C ../resources/ . 注意:这里使用了两次-C,第次切换到classes目录,打包该目录下的所有文件(用.表示当前目录);然后切换到resources目录(注意路径,因为当前在project目录,所以resources目录与classes同级,所以用../resources,或者使用绝对路径更安全),打包该目录下的所有文件。 但是,上面的命令中两次-C的路径写法需要注意相对路径。更安全的做法是使用绝对路径或者确保路径正确。 另种方式是不使用-C,而是直接指定要打包的目录,但这样会保留目录结构: jar cvfm app.jar manifest.mf classes/ resources/ 这样打包后,JAR文件内将包含classes和resources两个顶层目录。 根据需求选择合适的方式。 最后,生成相关问题: 1. 如何指定JAR文件的主类? 2. 如何将JAR文件设置为可执行? 3. JAR文件中的清单文件(MANIFEST.MF)有什么作用? 4. 如何解决JAR包中的中文乱码问题? 5. 如何将第三方依赖库打包进JAR文件(创建可执行JAR)? 注意:在回答中,我们引用了多个引用,需要在适当位置标注引用标识。</think>### JAR命令使用详解 JAR(Java Archive)是Java平台的标准打包工具,用于将多个文件(`.class`、资源文件等)压缩为单个`.jar`文件,便于分发和执行。以下是核心用法: --- #### 、基础命令结构 ```bash jar {ctxu} [vfM0i] [jar文件] [清单文件] [-C 目录] 文件名... ``` - **必选子命令**(四选): - `c`:创建新JAR- `t`:列出JAR内容 - `x`:解压JAR- `u`:更新已有JAR- **常用选项**: - `f`:指定JAR文件名(**必须提供**) - `v`:显示详细过程 - `m`:指定清单文件(`MANIFEST.MF`) - `0`:仅存储不压缩(加快速度) - `M`:不生成默认清单文件 - `-C`:切换到指定目录操作 --- #### 二、核心操作示例 1. **创建JAR包**(含详细输出): ```bash jar cvf app.jar Main.class lib/*.jar ``` - 打包`Main.class`和`lib/`下所有JAR文件 - `v`选项显示打包文件列表[^3] 2. **创建带清单文件的JAR**: ```bash jar cvfm app.jar manifest.txt -C bin/ . ``` - 使用`manifest.txt`作为清单文件 - `-C bin/ .`:将`bin/`目录下所有文件加入JAR[^1] 3. **查看JAR内容**: ```bash jar tf app.jar # 仅列出文件名 jar tvf app.jar # 显示详细属性(大小、日期等)[^3] ``` 4. **解压JAR包**: ```bash jar xf app.jar # 静默解压 jar xvf app.jar # 显示解压过程[^4] ``` 5. **更新JAR文件**(添加新文件): ```bash jar uf app.jar config.properties ``` 6. **创建不压缩的JAR**(加快加载): ```bash jar cvf0 lib.jar *.class # -0选项禁用压缩[^1] ``` --- #### 三、关键技巧 1. **清单文件(MANIFEST.MF)**: - 指定主类(可执行JAR): ```manifest Main-Class: com.example.Main ``` - 创建带主类的JAR: ```bash jar cvfe app.jar com.example.Main *.class ``` 2. **目录操作**: - 打包`target/`目录下所有文件: ```bash jar cvf app.jar -C target/ . ``` 3. **生成索引文件**(加速类加载): ```bash jar i app.jar # 创建META-INF/INDEX.LIST[^1] ``` --- #### 四、注意事项 1. **路径问题**: `-C` 目录路径需为绝对路径或相对于当前目录的有效路径[^2]。 2. **清单文件格式**: `MANIFEST.MF`每行结尾需有空格,末尾需空行(否则报错)[^1]。 3. **中文支持**: 文件名含中文时需指定编码(JDK 9+): ```bash jar --encoding=UTF-8 cvf app.jar 中文文件.txt ``` --- ### 典型问题排查 - **解压后文件缺失** → 检查`-C`参数路径是否正确[^4] - **清单未生效** → 确认`MANIFEST.MF`格式和位置(需在`META-INF/`下) - **版本冲突** → 使用`jar --version`确认JDK版本 > 通过`jar`命令,可高效管理Java应用资源,实现键部署[^2]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值