我有简单的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有一些类似的问题,但我找不到合适的答案。答案 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)。