我正在尝试将用 Java 6 编写的程序导出到 JAR 文件中。
我的项目包含一个来自 Internet 的 Java 库和一些 Java 源文件。当我创建 JAR 文件时,应该默认设置类路径,并且最终用户应该能够直接从命令提示符或其他来源运行项目。
如果可能的话,我的目标是将所有内容导出到 JAR 文件中。此外,程序输出应在命令提示符下给出。
如何以这种方式导出我的程序?
我正在尝试将用 Java 6 编写的程序导出到 JAR 文件中。
我的项目包含一个来自 Internet 的 Java 库和一些 Java 源文件。当我创建 JAR 文件时,应该默认设置类路径,并且最终用户应该能够直接从命令提示符或其他来源运行项目。
如果可能的话,我的目标是将所有内容导出到 JAR 文件中。此外,程序输出应在命令提示符下给出。
如何以这种方式导出我的程序?
您需要为此编写一个META-INF/MANIFEST.MF
文件;该文件应该位于您正在分发的 jar 文件中(即,人们使用的 jar 文件java -jar
)。这是我最近写的一个“项目”的例子:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.0
Created-By: 11.3-b02 (Sun Microsystems Inc.)
Main-Class: com.hedgee.simonsays.Main
Class-Path: lib/libthrift.jar
要关心的主要字段是Main-Class
(指定要查找您的main
方法的类)和Class-Path
(指定您正在使用的外部 jar 文件)。
您可以使用 Jsmooth http://jsmooth.sourceforge.net/捆绑您的 java 代码以生成可执行文件。
我对两种不同的方法有很好的经验:
1) 将 fatjar 插件与 eclipse 一起使用,创建一个包含所有需要嵌入的 jar 的单个 jar 文件(使用自定义类加载器)。这将创建一个可点击的 jar 文件(如果它是一个 GUI 程序)。如果您需要此 Jar 的控制台输出,请按照 Bhushan 的描述用 jsmooth 包装它。
2)使用Eclipse 3.5 Milestone 6中的“Export -> Runnable Jar”和“将依赖库复制到子文件夹”选项来创建一个普通的可运行jar,其中包含引用依赖jar文件的适当清单(放在子文件夹中) . 如果您想要一个不使用任何技巧的解决方案,这非常有效,但是编写脚本有点困难。