2

我有一个简单的 java 应用程序,可以打印“hello world!” 在控制台上。它打包在 app.jar 中。罐子结构:

main/Hello.class - 我的主类使用单一的 println 方法

元信息/清单.MF

清单文件包含以下内容:

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

一切顺利。

但是当你有依赖时,麻烦就开始了。我不确定,但认为在这种情况下,您必须将所有库放入 jar 文件中。如果我将它们放在 META-INF/lib 中,我必须在清单中指定“类路径”。“类路径”的外观如何?

PS有一些类似的问题,但我没有找到合适的答案。

4

2 回答 2

1

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

于 2010-07-27T12:47:34.527 回答
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)。

于 2010-07-27T12:54:58.067 回答