Java 使用Eclipse for JAR文件自动创建清单文件

Java 使用Eclipse for JAR文件自动创建清单文件,java,eclipse,jar,manifest,Java,Eclipse,Jar,Manifest,如何为我已经创建的一组JAR文件创建清单文件 我使用Eclipse创建我的JAR文件 有没有更好的方法来创建包含清单的JAR文件?当您使用JAR cf JAR file inputs files创建JAR时,会创建一个默认清单文件。清单是一个简单的文本文件,详细描述了它的内容 您只需创建这样一个文件,然后使用以下命令: jar cfm <jar-file> <manifest-addition> jar-cfm 清单文件是文本文件。由于JAR文件实际上是ZIP文件,您还

如何为我已经创建的一组JAR文件创建
清单
文件

我使用Eclipse创建我的JAR文件


有没有更好的方法来创建包含
清单的JAR文件?

当您使用
JAR cf JAR file inputs files
创建
JAR
时,会创建一个默认清单文件。清单是一个简单的文本文件,详细描述了它的内容

您只需创建这样一个文件,然后使用以下命令:

jar cfm <jar-file> <manifest-addition>
jar-cfm

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

Eclipse提供了一些选项,可以为Jar生成清单文件,将生成的清单保存到项目中,或者为清单使用指定的文件

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

右键单击项目->导出->Java/JAR文件,下一步,JAR文件规范,下一步,JAR打包选项,下一步,JAR清单规范

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

Manifest-Version: 1.0
在里面


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

使用Ant,您可以使用JAR任务。它有一个清单选项来指定需要包含的所有属性。大概是这样的:

  <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>

我今天遇到了这个问题

是的,Eclipse将为您创建清单,但这确实是一个笑话

它只包括行
清单版本:1.0
。我还没有弄清楚如何让它添加我的主类,所以我创建了自己的MANIFEST.MF文件,将它添加到我的项目主目录(不是src也不是lib)。然后,当我转到Export>JAR文件时,一直点击Next直到结束(不要过早点击Finish),然后点击选项选择manifest from project。选择刚刚添加到项目中的清单文件。确保清单中有指向主类(例如com.company等)的路径。例如,基本清单文件是这样的:

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

我尝试了@Michael的方法,但我的JAR中没有类文件,只有清单文件。。哦,好吧。我上面的方法工作得很好。

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


使用Eclipse,在底部的JAR清单规范页面上,有一个文本框,您可以在其中浏览您的Main类。浏览到您的Main类并单击Finish。这将生成包含允许执行jar文件的主类信息的清单-开发时间有点晚,但这是最简单/有效的解决方案:

右键单击项目->导出->在文件夹中选择Java“Runnable Jar” 文件“->

下一步->启动配置:选择您最近用来测试 项目,其余部分保留为默认值


清单现在有相关的条目来启动*.jarcorrect

我今天使用了Eclipse的方法,但是清单只是一行,没有指定我的主类的位置。无法弄清楚如何让Eclipse执行此操作,因此我制作了自己的清单文件,并在Eclipse项目的导出过程中选择了它。