当前位置: 首页 > news >正文

jar命令提取 JAR 文件

解压jar包。有的包就是没反应,探索中
➜ jar -xvf spring-boot-starter.jar -C unjar/
用法: 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/ .


扩展:

你提到的命令:

jar -xvf ./spring-boot-starter.jar

以及:

jar -xvf ./spring-boot-starter.jar -C ./ 

我们来逐一解释它们的作用,并分析为什么你执行后 没有输出,也没有解压文件。


一、命令结构解析

jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...
  • jar 是 Java 的归档工具,用于创建、查看、提取 .jar 文件。
  • x 表示 提取(extract)
  • v 表示 详细输出(verbose),会列出提取的每个文件。
  • f 表示 指定 jar 文件名,后面必须跟文件名。

所以:

jar -xvf spring-boot-starter.jar

表示:spring-boot-starter.jar 中提取所有内容,并输出详细信息。


为什么没有输出?

可能原因如下:


1. 文件不存在或路径错误

你执行命令时,系统没有报错,但也没有任何输出,可能是因为:

  • spring-boot-starter.jar 不在当前目录中
  • 或者你输入的文件名有误(比如大小写不一致、拼写错误等)。

验证方式

ls -l ./spring-boot-starter.jar

如果输出:

No such file or directory

说明文件不存在,或路径不对。


2. JAR 文件内容为空或损坏

  • 有可能这个 .jar 文件是空的,或者损坏了。
  • 这时 jar -xvf 也不会报错,只是默默结束。

验证方式

使用 jar -tf 查看 JAR 文件内容目录:

jar -tf ./spring-boot-starter.jar
  • 如果输出为空,说明 JAR 文件是空的。
  • 如果报错 java.util.zip.ZipException,说明文件损坏。

3. 权限问题

  • 你没有读取该文件的权限。
  • 可以通过 ls -l 检查权限。

正确的使用方式

示例 1:提取 JAR 文件到当前目录

jar -xvf spring-boot-starter.jar
  • -x:提取文件。
  • -v:显示详细信息。
  • -f:指定文件名。

这个命令会将 .jar 文件中的所有内容解压到 当前目录


示例 2:提取 JAR 文件到指定目录

mkdir -p ./unjar
jar -xvf spring-boot-starter.jar -C ./unjar/
  • -C ./unjar/:表示提取完成后,切换到 ./unjar 目录下存放文件
  • 这样可以避免文件污染当前目录。

举个完整例子

假设你有一个文件:

ls -l
-rw-r--r-- 1 user staff 12345678 Jul 17 20:00 spring-boot-starter.jar

你可以这样提取:

mkdir -p my_unjar
jar -xvf spring-boot-starter.jar -C my_unjar/

执行后你会看到类似输出:

created: my_unjar/META-INF/
inflated: my_unjar/META-INF/MANIFEST.MF
created: my_unjar/com/
created: my_unjar/com/example/
inflated: my_unjar/com/example/MyClass.class
...

总结

命令含义
jar -xvf file.jar提取 JAR 文件内容到当前目录
jar -xvf file.jar -C dir/提取 JAR 文件内容到指定目录 dir/
jar -tf file.jar查看 JAR 文件的内容列表(不提取)

建议操作流程

  1. 检查文件是否存在:

    ls -l ./spring-boot-starter.jar
    
  2. 查看 JAR 文件内容:

    jar -tf ./spring-boot-starter.jar
    
  3. 创建目标目录并提取:

    mkdir -p ./unjar
    jar -xvf ./spring-boot-starter.jar -C ./unjar/
    

http://www.lryc.cn/news/592184.html

相关文章:

  • Esbuild-新一代极速前端构建打包工具
  • PE系统机器视觉实战(直播回放)
  • 提示工程核心概念:与AI清晰沟通的艺术
  • wx小程序设置沉浸式导航文字高度问题
  • ::v-deep 是 Vue 中用于 ‌样式穿透(深度选择器)‌ 的语法
  • 自然语言处理:AI 如何听懂人类的 “话”?​
  • 香港服务器SSH安全加固方案与密钥认证实践
  • 多模态大模型重构人机交互,全感官时代已来
  • 从算力到智能资产:Sol long引领A I A g ent赋能设备的价值重构
  • 雪豹大模型驱动效率革命 华鼎冷链科技重构餐饮供应链神经网络
  • Mock 单元测试
  • 物流3D工业相机:解锁自动化物流新纪元
  • Python Pandas 实践学习笔记(1)
  • GISBox切片器技术解析:RVT模型到3DTiles瓦片的高性能转换方案
  • elasticsearch+logstash+kibana+filebeat实现niginx日志收集(未过滤日志内容)
  • 使用 C++ 和 OpenCV 进行表面划痕检测
  • 算法-动态规划
  • Paimon对比基于消息队列(如Kafka)的传统实时数仓方案的优势
  • 【动态规划 解析】
  • centos7安装MySQL8.4手册
  • 【PTA数据结构 | C语言版】二叉堆的快速建堆操作
  • Vue常见指令
  • Webpack 项目优化详解
  • mac mlx大模型框架的安装和使用
  • LangChain 源码剖析(三):连接提示词与大语言模型的核心纽带——LLMChain
  • FastAdmin后台登录地址变更原理与手动修改方法-后台入口机制原理解析-优雅草卓伊凡
  • 反序列化漏洞1-PHP序列化基础概念(0基础超详细)
  • 【C# in .NET】18. 探秘接口:契约精神
  • ARM64高速缓存,内存属性及MAIR配置
  • MariaDB 10.4.34 安装配置文档(Windows 版)