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

📅 发布时间:2026/7/4 5:38:10 👁️ 浏览次数:
【Linux命令大全】009.备份压缩之jar命令(实操篇)
【Linux命令大全】009.备份压缩之jar命令实操篇✨ 本文为Linux系统备份压缩命令的全面汇总与深度优化结合图标、结构化排版与实用技巧专为高级用户和系统管理员打造。(关注不迷路哈)文章目录【Linux命令大全】009.备份压缩之jar命令实操篇一、功能与作用二、基本用法1. 创建JAR文件2. 创建JAR并显示过程3. 列出JAR内容4. 提取JAR文件三、高级用法1. 创建可执行JAR2. 更新JAR文件3. 切换目录后创建JAR4. 显示详细过程5. 在脚本中创建JAR6. 查看MANIFEST文件7. 运行JAR文件四、实用技巧与常见问题实用技巧常见问题五、总结一、功能与作用jar命令是Java开发中的归档工具用于打包Java类文件、相关元数据和资源文件到一个JARJava 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.jar4. 提取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.MyMainClass2. 更新JAR文件使用jar uf命令可以向已有的JAR文件中添加新文件或更新现有文件# 更新JAR文件jar uf myapp.jar newclass.class3. 切换目录后创建JAR使用-C参数可以在添加文件前切换到指定目录这对于组织JAR文件的内部结构非常有用# 切换目录后创建JARjar cf myapp.jar -C src.这个命令会先切换到src目录然后将该目录下的所有文件添加到JAR文件中。4. 显示详细过程使用v参数可以显示JAR操作过程中的详细信息# 显示详细过程jar cvf myapp.jar *.class5. 在脚本中创建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.MF7. 运行JAR文件对于可执行JAR文件可以使用java -jar命令直接运行# 运行JAR文件java -jar myapp.jar四、实用技巧与常见问题实用技巧一步创建可执行JAR文件使用-e参数可以直接指定主类无需手动创建MANIFEST.MF文件# 一步创建可执行JAR文件jar cvfe myapp.jar com.example.MainClass *.class批量创建JAR文件#!/bin/bash# 批量为每个Java包创建JAR文件SOURCE_DIRsrcBUILD_DIRbuildJAR_DIRjarsmkdir-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.echoCreated JAR:$JAR_DIR/$pkg_name.jarfidone创建包含依赖的可执行JARFat JAR#!/bin/bash# 创建包含所有依赖的Fat JARAPP_NAMEmyappMAIN_CLASScom.example.MainClassLIB_DIRlibBUILD_DIRbuild# 收集所有依赖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中添加主类信息catMANIFEST.MFEOF Main-Class:$MAIN_CLASSClass-Path:$(find$LIB_DIR -name*.jar-printf%f )EOF验证JAR文件的完整性#!/bin/bash# 验证JAR文件的完整性JAR_FILEmyapp.jarecho验证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/null21;thenecho✓ MANIFEST.MF文件存在catMETA-INF/MANIFEST.MF|grep-iMain-Classecho✓ 包含主类信息rm-rf META-INFelseecho✗ MANIFEST.MF文件缺失fi从JAR文件中提取特定包# 从JAR文件中提取特定包jar xf myapp.jar com/example/utils/创建仅包含资源文件的JAR# 创建仅包含资源文件的JARjar cf resources.jar -C resources.常见问题错误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.jarJAR文件太大问题描述创建的JAR文件过大包含了不必要的文件。解决方法排除测试类和资源文件jar cf myapp.jar -C build . -exclude **/*Test.class使用混淆工具如ProGuard减小JAR大小仅包含必要的依赖使用依赖管理工具优化依赖树依赖类找不到问题描述运行JAR时出现ClassNotFoundException。解决方法检查类路径设置是否正确创建包含所有依赖的Fat JAR使用-cp参数指定所有依赖JARjava -cp myapp.jar:lib/* com.example.MainClassMANIFEST.MF文件格式错误问题描述创建JAR时出现MANIFEST.MF文件格式错误。解决方法确保MANIFEST.MF文件每行不超过72个字符使用正确的键值对格式Key-Name: Value确保文件最后一行有换行符JAR文件权限问题问题描述无法执行JAR文件。解决方法确保文件有执行权限chmod x myapp.jar使用正确的命令运行java -jar myapp.jar检查JRE是否正确安装五、总结jar命令是Java开发环境中的标准归档工具用于打包Java类文件、元数据和资源文件为JARJava ARchive格式。JAR文件是Java应用程序和库的标准分发格式支持可执行JAR、包含依赖的JAR等多种形式。在实际工作中jar命令常用于创建简单的Java应用程序或库构建可执行JAR文件用于分发管理Java项目的资源文件与构建工具如Maven、Gradle集成使用使用jar命令时需要注意正确使用参数组合如cvf用于创建详细输出的JAR对于可执行JAR确保MANIFEST.MF中的主类设置正确合理管理依赖关系避免JAR文件过大注意JAR文件的权限设置确保可执行JAR能够正常运行jar命令虽然简单但却是Java开发和部署过程中不可或缺的工具熟练掌握其使用方法可以提高Java项目的管理和分发效率。