尽管Java IDE和许多图形工具使查看和操作Java归档文件(JAR,WAR和EAR)文件的内容比以往更加容易,但有时我还是更喜欢使用命令行jar命令来完成这些任务。 当我必须重复做某事或作为脚本的一部分来做时,尤其如此。 在本文中,我将研究如何使用jar命令来创建,查看和操作Java归档文件。

JAR文件将主要在本文中使用,但是我在.jar文件上演示的命令与.war.ear文件一致。 还应该记住, JAR格式基于ZIP格式,因此可用于处理ZIP文件的众多工具都可以应用于JAR,WAR和EAR文件。 还应该记住, jar选项倾向于反映tar的选项 。

对于我的示例,我想打包并使用一些.class文件。 下一个屏幕快照演示将一些Java源代码文件( .java文件)编译为.class文件。 这些文件的实际来源对本次讨论无关紧要,此处未显示。 在本文中,我已经展示了在没有IDE的情况下进行编译,这与使用命令行工具保持一致。

准备要在

下一个屏幕快照显示了我的.class文件已经编译并准备好包含在JAR中。

创建一个JAR文件

jar命令提供的“ c ”选项指示它创建档案 。 我喜欢在我运行的所有jar命令中使用“ v ”(详细)和“ f ”(文件名)选项,以便输出将是详细的(以帮助您查看正在发生的事情,并且它是正在发生的正确事件)因此,可以根据命令的输入提供适用的JAR / WAR / EAR文件名,而不是根据标准输入和标准输出来输入或输出。 在创建JAR文件的情况下,选项“ cvf”将创建具有指定名称( f )的JAR文件( c ),并打印出有关此创建的详细输出( v )。

下一个屏幕快照演示了jar cvf的最简单用法。 我将当前目录更改为“ classes”目录,因此创建JAR就像运行jar cvf *jar cvf .一样简单jar cvf . 并且当前目录中的所有文件以及所有子目录和子目录中的文件将包含在创建的JAR文件中。 下一个屏幕快照中演示了此过程。

如果我不想在运行jar之前将当前目录显式更改为构建JAR的最适当目录,则可以使用-C选项指示jar在其创建过程中隐式执行此操作。 下一个屏幕快照对此进行了演示。

列出档案的内容

列出(或查看) JAR,WAR或EAR文件的内容可能是我使用jar命令最常执行的功能。 为此,我通常使用选项“ t ”(列出存档内容),“ v ”(详细)和“ f ”(在命令行上指定的文件名)。 下一个屏幕快照演示了如何运行jar tvf MyClasses.jar来查看我生成的JAR文件的内容。

提取存档文件的内容

有时需要提取存档文件中包含的一个或多个文件,以处理或查看这些单个文件的内容。 这是使用jarx ”(用于提取)选项完成的。 下一个屏幕快照演示了如何使用jar xvf MyClasses.jar提取该JAR文件的所有内容。 请注意,原始的JAR文件保持不变,但现在也可以直接使用其内容。

我通常只需要查看或使用存档文件的一个或两个文件。 尽管我可以绝对地提取所有文件,如上一个示例所示,并且仅编辑需要编辑的文件,但是如果文件数量很少,我更喜欢仅提取需要的文件。 使用相同的jar xvf命令可以轻松完成此操作。 通过指定完全限定的文件以在命令中的存档文件名之后显式提取,我可以指示

仅提取那些特定文件。 这是有优势的,因为我不会在目录中填入我不关心的文件,并且在完成后也不必担心清理太多。 下一个屏幕快照演示了运行情况
jar xvf MyClasses.jar dustin/examples/jar/GrandParent.class仅提取jar xvf MyClasses.jar dustin/examples/jar/GrandParent.class单个类定义,而不提取该JAR中的所有文件。

更新档案文件

先前的示例演示了如何为jar命令提供“ c”来创建档案,“ t”来列出档案的内容,以及“ x”来提取档案的内容。 另一个通常执行的功能是更新现有档案的内容 ,这是通过jar的“ u ”选项完成的。 下一个屏幕快照演示了如何在DOS中使用copy con命令创建一个名为tempfile.txt的文本文件,然后使用jar uvf MyClasses.jar tempfile.txt更新MyClasses.jar并将tempfile.txt添加到该JAR。

如果要更新现有存档中的文件,则可以使用jar xvf提取该文件,根据需要修改该文件,然后使用jar uvf命令将其放回原始JAR中。 新文件将覆盖同名的现有文件。 下一个屏幕快照对此进行了模拟。

从存档文件中删除条目

在阅读jar手册页 , jar的Oracle工具说明或jar的Java Tutorials覆盖范围时,没有选择从Java归档文件中删除条目的选项,可能会有些令人惊讶。 实现此目的的一种方法是提取JAR的内容,删除不再需要的文件,并从已删除这些文件的目录中重新创建JAR。 但是,一种更简单的方法是简单地利用基于ZIP的Java归档并使用基于ZIP的工具的删除功能。

下一个屏幕快照将演示使用的7-Zip(在Windows上)删除tempfile.txtMyClasses.jar运行命令7z d MyClasses.jar tempfile.txt 。 请注意,使用zip -d MyClasses.jar tempfile.txt可以在Linux中完成相同的操作。 其他ZIP支持工具也有自己的选择。

WAR和EAR文件

这篇文章中的所有示例都针对JAR文件,但是这些示例适用于WAR和EAR文件。 作为一个非常简单的示例,下一个屏幕快照演示了如何使用jar uvf使用新的Web描述符更新WAR文件。 出于说明目的,涉及的实际文件的内容无关紧要。 需要注意的重要一点是,可以以与JAR文件完全相同的方式来操纵WAR文件。 这也适用于EAR文件。

其他

在本文中,我重点介绍了可以从命令行对Java存档文件执行的“ CRUD”操作(创建/读取/更新/删除)和提取。 我通常将适用的“ CRUD”操作命令(“ c”,“ t”,“ u”)或提取命令(“ x”)与常用选项“ v”(详细)和“ f”(Java)结合使用在命令行上明确指定的归档文件名)。 jar命令支持除这些操作以外的其他操作,例如“ M”(控制清单文件的创建)和“ 0”(控制压缩)。 我也没有演示使用“ i”为Java档案生成索引信息。

有关使用Java存档的其他资源

我之前已经引用了这些内容,但是为了方便起见在此进行了总结。

  • Java教程:JAR文件中的打包程序
  • jar命令上的Oracle工具文档
  • 罐子男人佩奇

结论

jar命令相对易于使用,在某些情况下可以是创建,查看和修改Java归档文件内容的最快方法。 熟悉此命令行工具可以使Java开发人员不时得到回报,尤其是在执行高度重复的任务或涉及脚本的任务时。 IDE和工具(尤其是构建工具)在Java存档文件操作方面可以提供很多帮助,但是有时这些“开销”远大于从命令行使用jar时所需的开销。

翻译自: https://www.javacodegeeks.com/2014/12/manipulating-jars-wars-and-ears-on-the-command-line.html

在命令行上操作JAR,WAR和EAR相关推荐

  1. eclipse导入jar包_在命令行上操作JAR,WAR和EAR

    eclipse导入jar包 尽管Java IDE和许多图形工具使查看和操作Java归档文件(JAR,WAR和EAR)文件的内容比以往更加容易,但有时我还是更喜欢使用命令行jar命令来完成这些任务. 当 ...

  2. jar 、war、ear_在命令行上操作JAR,WAR和EAR

    jar .war.ear 尽管Java IDE和许多图形工具使查看和操作Java归档文件(JAR,WAR和EAR)文件的内容比以往更加容易,但有时我还是更喜欢使用命令行jar命令来完成这些任务. 当我 ...

  3. linux 快速找出上个命令,Linux 命令行快捷操作键

    原标题:Linux 命令行快捷操作键 涉及在linux命令行下进行快速移动光标.命令编辑.编辑后执行历史命令.Bang(!)命令.控制命令等.让basher更有效率. 常用ctrl+左右键:在单词之间 ...

  4. linux 下载了个图形软件 解压后 jar png,安装及使用pngquant在Linux命令行上压缩PNG图像...

    pngquant是一个命令行实用程序和一个用于PNG图像有损压缩的库,本文就介绍安装及使用pngquant在Linux命令行上压缩PNG图像,pngquant可以将PNG图像的大小减少多达70%,同时 ...

  5. 如何用git命令行上传本地代码到github

    如何用git命令行上传本地代码到github 2016年09月19日 16:10:36 阅读数:9337 注意:安装的前提条件是配置好git的相关环境或者安装好git.exe,此处不再重点提及 上传的 ...

  6. MySQL数据库安装-Windows10为例【超级详细安装过程(每一步的截图)、检测安装是否成功、登录数据库并查看版本号、将MySQL添加到环境变量中、在命令行窗口操作数据库】

    哈哈,这是在哔哩哔哩网站上 看的 MySQL安装步骤. 我安装的时候,截截图,希望对大家 有所帮助. 链接:https://pan.baidu.com/s/1fKFQCVHMQOmbg84UyGrKB ...

  7. linux脚本求命令行上整数和,shell脚本--cut命令与awk简单使用

    cut:对内容进行列切割 -d 后面的是分割符,表示用什么符号来分割符来分割列,分隔符使用引号括起来: -f后面跟着要选择的字段列,从1开始,表示第一列,如果要多列,可以用逗号分隔 : -c参数后面跟 ...

  8. aspell_如何使用Aspell在Linux命令行上检查拼写

    aspell 如今,正确的拼写对许多人来说似乎并不重要. 但是,对于我们当中的某些人来说,它是对的. 是的, 我的那些人之一. 虽然我不是拼写警察,但是当我遇到拼写错误的单词时,仍然会出现这些单词. ...

  9. linux 装nano命令,vim、nano在命令行上如何编辑文件

    此次教程中,我们将向您展示三种命令行编辑文件的方式.本文一共覆盖了三种命令行编辑器,vi(或 vim).nano 和 emacs. 在命令行上使用 Vi 或 Vim 编辑文件 您可以使用 vi 编辑文 ...

最新文章

  1. 史上最全SQL优化方案(一)
  2. 一毕业年薪 201 万!目前全球仅四人,华为最高档“天才少年”这样说
  3. 从零开始写一个武侠冒险游戏-3-地图生成
  4. java 数组的索引值_按索引访问Java数组位置的值
  5. 2、.net NVelocity中原生javascript ajax封装使用
  6. 玩转Mixly – 5、Arduino AVR编程 之 逻辑
  7. JVM - G1初探
  8. 源码与tarball套件管理程序笔记摘录
  9. Postgres主进程文件—postmaster.pid
  10. matlab 画光束等相面,一种新型贝塞尔光束器件的设计方法
  11. 扩展 TextBox 控件 - 依 FormViewMode 来自行设定状态
  12. Linux下的网卡驱动程序的编写过程(转)
  13. xen服务器不能挂载iso文件,Citrix XenCenter安装VM之挂载ISO详解
  14. Verilog描述——一位全加器,四选一选择器,计数器
  15. java正则表达式 用户名_java之正则表达式
  16. 论文阅读笔记——野外和非侵入性遗传方法评估棕熊种群规模
  17. 开机自检(POST)
  18. 【读】自动文摘——预备
  19. 「Adobe国际认证」书籍封面设计需要掌握的知识技巧?
  20. 这些响应式网页测试工具确保你的设计万无一失

热门文章

  1. Mybatis+mysql动态分页查询数据案例——Mybatis的配置文件(mybatis-config.xml)
  2. 判断字符串相等能否用==
  3. 散列算法,Remal使用散列算法
  4. js+php在线截图 jquery fileupload.js,另一种图片上传 jquery.fileupload.js
  5. python简单爬虫课题_VS2019python爬虫入门
  6. java异常——分析堆栈跟踪元素+使用异常机制的技巧
  7. 进程间通信(IPC)+进程加锁解锁
  8. 索引失效的场景(面试)
  9. 你为什么要关心equals和hashcode
  10. win7 activemq_带有骆驼,ActiveMQ,Elasticsearch的关键HL7用例