gpt4 book ai didi

java - Jar Manifest文件使用的困惑

转载 作者:行者123 更新时间:2023-11-30 09:15:08 24 4
gpt4 key购买 nike

我正在阅读使用 jar 工具打包 java 应用程序。我注意到在 META-INF 目录下创建了一个 list 文件。对于一个简单的应用程序,感觉就像没有任何用处。我在 stackoverflow 上搜索以了解 Manifest 文件的用法。我遇到了UsesOfManifestFile .在阅读答案时,我对第 2 点和第 3 点感到困惑:-

  1. 什么是下载扩展?我无法理解答案中的概念。
  2. 密封 jar 是什么意思?它在下面给出了这样的例子

Name: myCompany/MyPackage/ Sealed: true

放这样的信息有什么用?有人可以详细说明这些要点。谢谢。

最佳答案

manifest文件就像java程序运行jar的指导说明。创建 list 后,它将包含重要信息,例如对主程序的引用。当 java 程序运行你的 jar 时,它不知道从哪里开始,所以它在 list 中寻找一行告诉它带有 main 方法的类在哪里,所以它有一个程序的起点。另一个用途是类路径行,它将告诉程序在哪里可以找到 jar 中的任何第 3 方库,否则 java 程序将找不到它们。

list 文件中可以存储一系列数据,我建议查看 Oracle information在他们身上,看看是否能更清楚一点。

编辑: 来自关于您的示例的 Oracle 站点:

Packages within JAR files can be optionally sealed, which means that all classes defined in that package must be archived in the same JAR file. You might want to seal a package, for example, to ensure version consistency among the classes in your software.

You seal a package in a JAR file by adding the Sealed header in the manifest, which has the general form:

Name: myCompany/myPackage/ Sealed: true The value myCompany/myPackage/ is the name of the package to seal.

Note that the package name must end with a "/".

这似乎意味着您在程序中使用的所有类必须在同一个 jar 文件中。

EDIT 2(评论回复)

list 可能包含以下行:

Main-Class: com.mkyong.awt.AwtExample  

当 javaw.exe(我认为)运行你的可运行 jar 时,它不知道从哪里开始,所有 java 程序都通过 main 方法运行,但是如果你说你的 jar 中有 50 个类文件,它没有想法从哪个主要方法开始。它会查看 list 文件,阅读你上面的行并认为是正确的,主要方法在包 com.mkyong.awt 中,类是 AwtExample,然后它找到这个类并从该主要方法运行程序。 jar 中最基本的功能是告诉运行 jar 的 java 程序在哪里可以找到运行 jar 所需的东西。

注意:示例 list 条目来自一个小 tutorial其中展示了如何创建一个简单的可运行 jar。

祝你好运!

关于java - Jar Manifest文件使用的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20066184/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com