【发布时间】:2017-08-27 10:41:04
【问题描述】:
我的机器上有一些从命令行运行的 Java 代码。我想从此代码创建一个可运行的.jar 文件,以便我可以更轻松地分发我的应用程序。
代码位于四个文件夹中,分别称为fol_a、fol_b、fol_c 和fol_d。其中每一个都包含一个/bin 子文件夹,其中包含.class 文件,其中两个(fol_a 和fol_b)还包含一个/lib 文件夹,其中包含一些代码需要的.jar 文件。
fol_d 包含要运行的类Demo,它位于名为machineLearning 的包中。类的完整路径是
fol_d/bin/machineLearning/Demo
我目前从命令行运行代码如下:
$ cd fol_d/bin
$ java -cp ".:../../fol_a/bin:../../fol_a/lib/*:../../fol_b/bin:../../fol_b/lib/*:../../fol_c/bin" machineLearning.Demo <param_1> <param_2> ... <param_5>
其中<param_1> 到<param_5> 是Demo 中Main 方法的参数。
我想要的是创建一个单一的.jar 文件,其中包含成功执行Demo 所需的所有代码,即fol_a 到fol_d 中的代码。然后我希望能够从命令行运行这个.jar 文件,并为其提供Demo 中的Main 方法的参数。像这样的:
$ java -jar MyApplication.jar <param_1> ... <param_5>
这可能吗?我该怎么做?我一直试图在网上找到答案,但信息量让我感到困惑。
更新
对!所以看来我需要做的就是:
- 将
bin目录的内容复制到新目录myapp - 制作一个 manifest.txt 文件,指定要运行的主类以及类路径
- 罐子
myapp:$ jar cmf manifest.txt myapp.jar -C myapp/ . - 执行jar:
$ java -jar myapp.jar <arg_1> <arg_2> ... <arg_n>
【问题讨论】:
标签: java shell jar executable-jar