news 2026/4/16 18:27:19

【Linux命令大全】009.备份压缩之jar命令(实操篇)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Linux命令大全】009.备份压缩之jar命令(实操篇)

【Linux命令大全】009.备份压缩之jar命令(实操篇)

✨ 本文为Linux系统备份压缩命令的全面汇总与深度优化,结合图标、结构化排版与实用技巧,专为高级用户和系统管理员打造。

(关注不迷路哈!!!)

文章目录

  • 【Linux命令大全】009.备份压缩之jar命令(实操篇)
    • 一、功能与作用
    • 二、基本用法
      • 1. 创建JAR文件
      • 2. 创建JAR并显示过程
      • 3. 列出JAR内容
      • 4. 提取JAR文件
    • 三、高级用法
      • 1. 创建可执行JAR
      • 2. 更新JAR文件
      • 3. 切换目录后创建JAR
      • 4. 显示详细过程
      • 5. 在脚本中创建JAR
      • 6. 查看MANIFEST文件
      • 7. 运行JAR文件
    • 四、实用技巧与常见问题
      • 实用技巧
      • 常见问题
    • 五、总结

一、功能与作用

jar命令是Java开发中的归档工具,用于打包Java类文件、相关元数据和资源文件到一个JAR(Java ARchive)文件中。JAR文件是一种特殊的ZIP格式文件,它不仅可以用于打包Java应用程序和库,还可以包含程序的入口点信息,使得JAR文件可以直接执行。jar命令是Java开发环境(JDK)中的标准工具,对于Java开发者来说是不可或缺的。

参数详解

参数说明
c创建新的归档文件
t列出归档内容
x提取归档文件
u更新归档文件
v显示详细过程
f指定归档文件名
C切换到指定目录

二、基本用法

1. 创建JAR文件

使用jar cf命令可以创建一个新的JAR文件:

# 创建JAR文件jar cf myapp.jar *.class

这个命令会将当前目录下所有扩展名为.class的文件打包到myapp.jar文件中。

2. 创建JAR并显示过程

使用jar cvf命令可以在创建JAR文件的同时显示详细过程:

# 创建JAR并显示过程jar cvf myapp.jar *.class

执行后,会显示正在添加的文件列表。

3. 列出JAR内容

使用jar tf命令可以查看JAR文件中的内容列表,而无需实际提取:

# 列出JAR内容jar tf myapp.jar

4. 提取JAR文件

使用jar xf命令可以提取JAR文件中的所有内容:

# 提取JAR文件jar xf myapp.jar

执行后,JAR文件中的所有文件和目录将被提取到当前目录中。

三、高级用法

1. 创建可执行JAR

可执行JAR文件包含主类信息,可以直接通过java -jar命令运行。要创建可执行JAR,需要先创建一个包含主类信息的MANIFEST.MF文件,然后使用jar cfm命令:

# 创建可执行JARjar cfm MyApp.jar manifest.txt *.class

其中,manifest.txt文件应包含类似以下内容:

Main-Class: com.example.MyMainClass

2. 更新JAR文件

使用jar uf命令可以向已有的JAR文件中添加新文件或更新现有文件:

# 更新JAR文件jar uf myapp.jar newclass.class

3. 切换目录后创建JAR

使用-C参数可以在添加文件前切换到指定目录,这对于组织JAR文件的内部结构非常有用:

# 切换目录后创建JARjar cf myapp.jar -C src.

这个命令会先切换到src目录,然后将该目录下的所有文件添加到JAR文件中。

4. 显示详细过程

使用v参数可以显示JAR操作过程中的详细信息:

# 显示详细过程jar cvf myapp.jar *.class

5. 在脚本中创建JAR

可以在shell脚本中使用jar命令自动化JAR文件的创建过程:

# 在脚本中创建JAR#!/bin/bashjar cf app_$(date+%Y%m%d).jar -C build/classes.

这个脚本会创建一个包含当前日期的JAR文件,其中包含build/classes目录下的所有文件。

6. 查看MANIFEST文件

JAR文件中的META-INF/MANIFEST.MF文件包含了JAR的元数据信息,可以通过以下命令查看:

# 查看MANIFEST文件jar xf myapp.jar META-INF/MANIFEST.MFcatMETA-INF/MANIFEST.MF

7. 运行JAR文件

对于可执行JAR文件,可以使用java -jar命令直接运行:

# 运行JAR文件java -jar myapp.jar

四、实用技巧与常见问题

实用技巧

  1. 一步创建可执行JAR文件

使用-e参数可以直接指定主类,无需手动创建MANIFEST.MF文件:

# 一步创建可执行JAR文件jar cvfe myapp.jar com.example.MainClass *.class
  1. 批量创建JAR文件
#!/bin/bash# 批量为每个Java包创建JAR文件SOURCE_DIR="src"BUILD_DIR="build"JAR_DIR="jars"mkdir-p$BUILD_DIR$JAR_DIR# 编译所有Java文件javac -d$BUILD_DIR$SOURCE_DIR/**/*.java# 为每个包创建JAR文件forpkg_dirin$BUILD_DIR/*;doif[-d"$pkg_dir"];thenpkg_name=$(basename"$pkg_dir")jar cf"$JAR_DIR/$pkg_name.jar"-C"$pkg_dir".echo"Created JAR:$JAR_DIR/$pkg_name.jar"fidone
  1. 创建包含依赖的可执行JAR(Fat JAR)
#!/bin/bash# 创建包含所有依赖的Fat JARAPP_NAME="myapp"MAIN_CLASS="com.example.MainClass"LIB_DIR="lib"BUILD_DIR="build"# 收集所有依赖JARDEPENDENCIES=$(echo$LIB_DIR/*.jar|tr' '':')# 编译Java文件javac -d$BUILD_DIR-cp$DEPENDENCIES$SOURCE_DIR/**/*.java# 创建包含所有依赖的JARjar cvfm$APP_NAME.jar MANIFEST.MF -C$BUILD_DIR.$(find$LIB_DIR -name"*.jar"-exececho-C{}.\;)# 在MANIFEST.MF中添加主类信息cat>MANIFEST.MF<<EOF Main-Class:$MAIN_CLASSClass-Path:$(find$LIB_DIR -name"*.jar"-printf"%f ")EOF
  1. 验证JAR文件的完整性
#!/bin/bash# 验证JAR文件的完整性JAR_FILE="myapp.jar"echo"验证JAR文件完整性:$JAR_FILE"# 使用jar命令验证jar tf$JAR_FILE>/dev/nullif[$?-eq0];thenecho"✓ JAR文件结构完整"elseecho"✗ JAR文件结构损坏"exit1fi# 检查MANIFEST.MF文件ifjar xf$JAR_FILEMETA-INF/MANIFEST.MF>/dev/null2>&1;thenecho"✓ MANIFEST.MF文件存在"catMETA-INF/MANIFEST.MF|grep-i"Main-Class"&&echo"✓ 包含主类信息"rm-rf META-INFelseecho"✗ MANIFEST.MF文件缺失"fi
  1. 从JAR文件中提取特定包
# 从JAR文件中提取特定包jar xf myapp.jar com/example/utils/
  1. 创建仅包含资源文件的JAR
# 创建仅包含资源文件的JARjar cf resources.jar -C resources.

常见问题

  1. 错误:Could not find or load main class

问题描述:运行可执行JAR时出现"Could not find or load main class"错误。

解决方法

  • 检查MANIFEST.MF文件中的Main-Class属性是否正确
  • 确保主类包含完整的包名(如:com.example.MainClass
  • 验证JAR文件结构是否正确:jar tf myapp.jar
  1. JAR文件太大

问题描述:创建的JAR文件过大,包含了不必要的文件。

解决方法

  • 排除测试类和资源文件:jar cf myapp.jar -C build . -exclude "**/*Test.class"
  • 使用混淆工具如ProGuard减小JAR大小
  • 仅包含必要的依赖,使用依赖管理工具优化依赖树
  1. 依赖类找不到

问题描述:运行JAR时出现"ClassNotFoundException"。

解决方法

  • 检查类路径设置是否正确
  • 创建包含所有依赖的Fat JAR
  • 使用-cp参数指定所有依赖JAR:java -cp "myapp.jar:lib/*" com.example.MainClass
  1. MANIFEST.MF文件格式错误

问题描述:创建JAR时出现MANIFEST.MF文件格式错误。

解决方法

  • 确保MANIFEST.MF文件每行不超过72个字符
  • 使用正确的键值对格式:Key-Name: Value
  • 确保文件最后一行有换行符
  1. JAR文件权限问题

问题描述:无法执行JAR文件。

解决方法

  • 确保文件有执行权限:chmod +x myapp.jar
  • 使用正确的命令运行:java -jar myapp.jar
  • 检查JRE是否正确安装

五、总结

jar命令是Java开发环境中的标准归档工具,用于打包Java类文件、元数据和资源文件为JAR(Java ARchive)格式。JAR文件是Java应用程序和库的标准分发格式,支持可执行JAR、包含依赖的JAR等多种形式。

在实际工作中,jar命令常用于:

  • 创建简单的Java应用程序或库
  • 构建可执行JAR文件用于分发
  • 管理Java项目的资源文件
  • 与构建工具(如Maven、Gradle)集成使用

使用jar命令时需要注意:

  • 正确使用参数组合(如cvf用于创建详细输出的JAR)
  • 对于可执行JAR,确保MANIFEST.MF中的主类设置正确
  • 合理管理依赖关系,避免JAR文件过大
  • 注意JAR文件的权限设置,确保可执行JAR能够正常运行

jar命令虽然简单,但却是Java开发和部署过程中不可或缺的工具,熟练掌握其使用方法可以提高Java项目的管理和分发效率。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 0:07:56

智能儿童台灯系统设计与实现

智能儿童台灯系统设计与实现 第一章 绪论 传统儿童台灯功能单一&#xff0c;仅提供基础照明&#xff0c;存在亮度固定、色温不适、易造成视觉疲劳、缺乏坐姿提醒、无定时护眼与学习管理等问题&#xff0c;难以满足儿童学习场景下的健康用眼与习惯培养需求。智能儿童台灯系统融…

作者头像 李华
网站建设 2026/4/16 16:03:30

救命神器9个降AIGC平台推荐!千笔AI助你轻松降AI率

AI降重工具&#xff0c;让你的论文更“自然” 在如今的学术写作中&#xff0c;AI生成的内容虽然高效便捷&#xff0c;但往往带有明显的AI痕迹&#xff0c;容易被查重系统识别为高AIGC率内容。对于本科生而言&#xff0c;如何在保证论文质量的同时降低AI痕迹和查重率&#xff0…

作者头像 李华
网站建设 2026/4/16 14:13:07

汉口中心的巨型 “天然氧吧”,藏着武汉人的日常浪漫

解放公园是武汉市一座具有代表性的城市公园&#xff0c;其核心特点在于将自然生态景观、有序的空间规划与市民的日常休闲生活融为一体&#xff0c;形成了宁静而富有生机的城市公共空间。公园位于汉口中心城区&#xff0c;占地面积广阔。园区布局规整&#xff0c;以贯穿东西的主…

作者头像 李华
网站建设 2026/4/16 14:49:00

宏智树 AI:教你搞定文献综述,从找文献到成稿不再死磕

作为深耕论文写作科普的教育博主&#xff0c;后台被问爆的永远是文献综述&#xff1a;“翻遍知网找不着相关文献”“梳理文献只会堆摘要&#xff0c;毫无逻辑”“只敢述不敢评&#xff0c;找不准研究空白”…… 文献综述是论文的学术基石&#xff0c;却成了 90% 论文新手的第一…

作者头像 李华
网站建设 2026/4/16 14:18:51

光栅的偏振分析

光栅是许多经典和现代光学系统的基本组成元件&#xff0c;如光谱仪和近眼显示领域。光栅的一个特征是对入射光的偏振敏感性&#xff0c;以及通常情况下较强的矢量特性。无论这种影响是否有益&#xff0c;快速物理光学软件为您提供了帮助&#xff1a;首先&#xff0c;通过了一致…

作者头像 李华