在Java中使用JAR和清单文件

先决条件—— JAR文件格式

null

每当开发人员想要发布软件的一个版本时,他只想发布一个文件,而不是一个充满类文件的目录结构。JAR文件就是为此而设计的。JAR文件可以包含类文件和其他文件类型,比如项目中可能包含的声音和图像文件。JAR文件中的所有文件都使用类似于zip的格式进行压缩。

创建JAR文件–更多选项

jar文件是使用jar工具创建的。总司令部看起来有点像这样:

 jar options jar-file [manifest-file] file1 file2 file3 ...
  • jar–文件: 要在其上使用jar工具的jar文件的名称。
  • 文件1、文件2、文件3: 要添加到jar文件中的文件。manifest file是包含该jar文件清单的文件的名称,将manifest file作为参数是完全可选的。
  • C :创建新的或空的存档文件,并向其中添加文件。如果指定的任何文件名都是目录,那么jar程序将递归地处理它们。
  • C :临时更改目录。
  • e: 在清单中创建入口点。
  • F :指定JAR文件名作为第二个命令行参数。如果缺少此参数,jar将把结果写入标准输出(创建jar文件时)或从标准输入读取(提取或制表jar文件时)。
  • :创建索引文件。
  • M :将清单文件添加到JAR文件。清单是对档案内容和来源的描述。每个归档文件都有一个默认清单,但如果要验证归档文件的内容,可以提供自己的清单。
  • M :不为条目创建清单文件。
  • t: 显示目录。
  • u: 更新现有的JAR文件。
  • 五: 生成详细的输出。
  • x: 提取文件。如果提供一个或多个文件名,则只提取这些文件,否则将提取所有文件。
  • 0 : 没有压缩的商店。

jar命令的选项几乎与UNIX tar命令的选项相似。在windows中,只需在cmd中键入jar,然后按enter键,您还可以获得有关jar命令各种选项的帮助,输出结果将与以下类似:

jar command options

例子:

用于创建包含两个服务器类的JAR文件。类和客户端。类和Jpeg图像徽标。jpeg,需要编写以下命令:

 jar cvf chat.jar server.class client.class logo.jpeg

上述命令的输出有点像这样:

图片[2]-在Java中使用JAR和清单文件-yiteyi-C++库

这是一个更好的练习 -五 选项和jar命令一起使用,您将了解情况。

清单文件

每个JAR文件都包含一个清单文件,用于描述归档文件的功能。默认情况下,每个JAR文件都有一个清单文件。默认清单文件名为清单。MF和存在于存档的META-INF子目录中。虽然默认清单文件只包含两个条目,但复杂的清单文件可能有更多的条目。以下是默认清单文件的外观——

Default manifest

清单文件的条目分为多个部分。每个节都有两个条目:节名及其值。稍后我们将看到这些部分如何真正帮助我们控制归档文件的属性。清单文件也可以通过使用 M jar命令的选项。但在更新清单文件时,需要记住某些事情,否则您可能会收到以下令人毛骨悚然的消息。

 java.io.IOException: invalid manifest format

处理清单文件时要记住的事项:

  1. 您应该在清单文件中任何部分的名称和值之间留有空格,比如Version:1.1在valid节中,而不是write Version:1.1冒号和1.1之间的空格非常重要。
  2. 在指定不应添加的主类时。类名末尾的类扩展名。只需键入以下内容来指定主类:
    Main-Class: Classname

    (我将很快介绍主课部分)。

  3. 必须在文件末尾添加换行符。你不需要写信要指定换行符,只需将清单文件的最后一行留空即可。
  4. 清单的文本文件必须使用UTF-8编码,否则可能会遇到麻烦。

例子:

现在我们回来更新聊天内容。jar档案。要更新清单文件,只需编写以下命令:

 jar uvfm chat.jar manifest.txt

这是舱单。txt是新的清单文件,包含以下内容:

manifest.txt

上述命令的输出有点像这样:

null

这里我们得到两个警告,因为我们试图覆盖以前出现的条目。

可执行Jar文件

你可以使用 E jar命令的选项,以指定程序的入口点,即启动Java应用程序时通常要调用的类。

例子:

创建聊天室。以客户机类为主类的jar文件您需要编写以下命令——

 jar cvfe chat.jar client client.class server.class logo.jpeg

上述命令的输出有点像这样:

图片[6]-在Java中使用JAR和清单文件-yiteyi-C++库

记住不要添加。要设置主类的类名称后的类扩展。

或者,您可以在清单文件中添加一个主类条目,然后对其进行更新。对于上述示例,您只需添加以下条目:

 Main-Class: client

设置了主类后,只需编写以下命令即可运行jar程序——

 java -jar chat.jar

根据操作系统的配置,用户甚至可以通过双击JAR文件图标来启动应用程序。

包装密封

最后,我们将讨论Java中的包密封。我们可以用Java密封一个包,以确保没有更多的类可以添加到其中。如果在代码中使用可见类、方法和字段的包,则可能需要密封包。如果没有包密封,其他类可以将自己添加到同一个包中,从而获得对包可见特性的访问。

  • 要实现包密封,只需将该包的所有类放入一个JAR文件中。
  • 默认情况下,jar文件中的包不是密封的,但可以通过在清单文件中添加几行来更改全局默认值。
  • 让我们再考虑一下我们聊天的情况。jar存档,现在是客户端类包。类和服务器。类是应用程序,我们想要密封这个包,我们需要做的就是在清单文件中添加以下行并更新它。
     Name: application
    Sealed: true

这些都是关于如何使用JAR文件的。敬请期待!! 本文由 Abhey Rana(UselessCoder) .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享