2

JarSplice允许将 jar 文件和其他依赖项和库聚合到一个可执行的 jar 文件中。

但是,我的可执行 jar 需要两个命令行参数,当我调用 JarSplice jar 时,它们似乎根本没有传递。

我在网站上没有看到任何关于如何做到这一点的内容,或者是否有可能。好奇是否有人遇到过这个问题,或者找到了可能的解决方案。

更新

我还应该补充一点,我的主类是在 JarSplice 设置中指定的,并且被成功调用。但是,如果我调用 java -jar myjar.jar param1 param2,然后尝试打印 param1 和 param2,它们为空。

4

1 回答 1

3

我很害怕,这个工具有一些严重的缺陷。

它不仅将您的Main-Class设置在fat.jar MANIFEST.MF中,还将它自己的设置org.ninjacave.jarsplice.core.JarSpliceLauncherMain-Class

然后,当您启动fat.jar(使用java -jar fat.jar)时,该类使用 aJarSpliceLauncher启动一个新进程ProcesBuilder,并且不向其传递任何额外参数。

对我来说,它只是JarSplice中的一个错误/糟糕的设计。

现在,解决方法是将您的实际Main-Class传递给java可执行文件,如下所示:

java -cp fat.jar org.myawesomeapp.MyAwesomeClass [params....]

此外,还有其他(更好的)选项:

  1. 阅读有关Maven 程序集插件的信息,它是jar-with-dependencies描述符
  2. 在 Eclipse 中,您可以使用Export => Runnable JAR => Select Extract required libraries into generated JAR
于 2012-06-12T14:19:25.933 回答