17

如何Manifest为我已经创建的一组 JAR 文件创建一个文件。

我使用 Eclipse 创建我的 JAR 文件。

有没有更好的方法来创建一个具有Manifest.

4

9 回答 9

9

Eclipse 提供了为 Jar 生成清单文件、将生成的清单保存到项目中或为清单使用指定文件的选项。

我有 Eclipse 3.4.2,它在这个过程的第四个屏幕上:

右击 Project -> Export -> Java/JAR file,Next,JAR File Specification,Next,JAR Packaging Options,Next,JAR Manifest Specification。

默认是只为 JAR 生成一个默认清单,而不是将生成的文件保存回项目,所以如果你打开你的 JAR 文件,它将有一个清单,但它只会有如下内容:

Manifest-Version: 1.0

在里面。

如果您想更改现有的 JAR 而不重新构建它们,最简单的方法可能是按照 mad-j 的建议进行操作并使用 Zip 工具打开它们并编辑现有的 /META-INF/MANIFEST.MF 文件并保存它回到 JAR。

于 2009-09-11T13:16:35.063 回答
6

我今天刚遇到这个问题。

是的,Eclipse 会为你创建 Manifest,但这真的是个笑话。

它只包括行Manifest-Version: 1.0。我还没有弄清楚如何让它添加我的 Main 类,所以我创建了自己的 MANIFEST.MF 文件,将它添加到我的项目主目录(不是 src 也不是 lib)。然后,当我转到“导出”>“JAR 文件”时,一直点击“下一步”到最后(不要太早点击“完成”),然后单击从项目中选择清单的选项。选择您刚刚添加到项目中的清单文件。确保 Manifest 包含 Main 类的路径(例如 com.company 等)。例如,这是基本清单文件的样子:

Manifest-Version: 1.0
Created-By: 1.6.0 (Sun Microsystems Inc.)
Main-Class: MyPackage.MyClass

我尝试了@Michael 的方法,但最终我的 JAR 中没有留下任何类文件,只有 Manifest 文件......哦,好吧。我上面的方法效果很好。

于 2011-08-24T22:44:19.920 回答
3

清单是一个简单的文本文件,Sun 的教程详细描述了它的内容。

您所要做的就是创建这样一个文件并使用以下命令更新 JAR 文件:

jar cfm <jar-file> <manifest-addition>
于 2009-09-11T11:36:05.130 回答
3

使用 Ant,您可以使用jar task。它有一个清单选项来指定您需要包含的所有属性。像这样的东西:

  <target name="create-my-jar">
     <jar jarfile="foo.jar" basedir="bin/classes">      
        <manifest>
        <attribute name="Class-Path" value="xxx"/>
        <attribute name="Ant-Version" value="${ant.version}"/> 
        <attribute name="Created-By" value="JDK ${java.version} (${java.vendor})"/>
        <attribute name='Specification-Title' value='xxx' />
        <attribute name='Specification-Version' value='xxx' />
        <attribute name='Specification-Vendor' value='xxx' />
        <attribute name='Implementation-Title' value='xxx' />
        <attribute name='Implementation-Version' value='xxx' />
        <attribute name='Implementation-Vendor' value='xxx' />
        <attribute name='Implementation-Vendor-Id' value='xxx' />
        <attribute name='Implementation-Vendor-URL' value='xxx' />
        <attribute name="Built-By" value="${user.name}"/>
        <attribute name='Build-Date' value='xxx'/>
        <attribute name='Build-Time' value='xxx'/>              
        </manifest>
        </jar>
   </target>
于 2009-09-11T13:32:09.957 回答
0

清单文件是文本文件。由于 JAR 文件实际上是 ZIP 文件,因此您还可以使用7-zip之类的工具添加清单。当然,这不适用于已签名的 JAR。

于 2009-09-11T11:43:05.597 回答
0

创建jarusing时会创建默认清单文件jar cf jar-file inputs-files

于 2009-09-11T11:34:15.883 回答
0

使用 Eclipse,在底部的JAR Manifest Specification页面上有一个文本框,您可以在其中浏览您的Main类。浏览到您的Main类,然后单击Finish。这会生成带有允许执行 jar 文件的主类信息的清单。-Dev On

于 2017-07-24T22:53:19.337 回答
0

有点晚了,但这是最简单/有效的解决方案:

右键单击项目->导出->在文件夹中选择Java“可运行Jar文件”->
在此处输入图像描述

Next-> Launch Configuration:选择你最近用来测试项目的那个,其余的保持默认

清单现在具有启动 *.jar 正确的相关条目

于 2021-04-13T11:47:42.587 回答
0

您也可以查看此文档,这有助于我使用 Eclipse 向导解决问题。

请参阅 Eclipse 文档

于 2016-04-28T18:08:12.060 回答