创建可以在任何计算机上执行的jar文件

时间:2010-07-27 12:39:47

标签: manifest executable-jar manifest.mf

我有简单的java应用程序打印`hello world!'在控制台上。它打包在app.jar中。 罐子结构:

  

main / Hello.class - 我的主要类有单一的println方法

     

META-INF / MANIFEST.MF

清单文件包含以下内容:

Manifest-Version: 1.0
Main-Class: main.Hello

一切都很顺利。

但是当你有依赖而不是麻烦开始。我不确定但是想想在这种情况下你必须把所有的lib放到jar文件中。如果我把它们放在META-INF / lib中,我必须在清单中指定“Class-Path”。 “Class-Path”的外观如何?

P.S有一些类似的问题,但我找不到合适的答案。

2 个答案:

答案 0 :(得分:1)

如果解压缩库并将它们集成到项目中,则无需指定任何特殊内容。如果你这样做,你应该有一个“main”文件夹,如果你有org.apache.foo作为外部库,你也会在顶层有一个“org”文件夹。

答案 1 :(得分:1)

我倾向于使用ANT构建脚本来打包我的应用程序和所有必需的jar文件。我发现,一旦你正常工作,这会让生活变得更加轻松。

build.xml文件类似于:

<project default="create_run_jar" name="Create Runnable Jar for MyProject">
    <!--ANT 1.7 is required -->
    <target name="create_run_jar">
        <jar destfile="my-runnable-jar.jar">
            <manifest>
                <attribute name="Main-Class" value="my.MainClass"/>
                <attribute name="Class-Path" value="."/>
            </manifest>
            <fileset dir="E:/path/to/my/project/bin"/>
            <fileset dir="E:/path/to/my/project/classes"/>
            <zipfileset src="E:/path/to/library/some-library.jar"/>
        </jar>
    </target>
</project>

请注意,如果您使用Eclipse,则可以简单地执行File / Export ... / Runnable jar文件,它将为您完成所有操作(包括生成ANT build.xml)。