【问题标题】:Writing a Unix installer for a Jar file为 Jar 文件编写 Unix 安装程序
【发布时间】:2014-07-29 09:43:09
【问题描述】:

我编写了一个 Java 应用程序,并创建了一个可执行的 Jar 文件,该文件可以使用java -jar myJar.jar 成功运行我的应用程序。我有一个名为 launchMyProgram 的可执行 shell 脚本,它包装了这个 Jar 的启动(并提供了各种标志,如 --help 等)。我的目标输出目录如下所示:

$ ls /path/to/MyProject/target/
archive-tmp/      classes/          myJar.jar

为我的纯 Unix 应用程序编写安装程序的标准方法是什么?我认为将launchMyProgram 可执行文件放到/usr/local/bin 中是正确的。但是我应该把 Jar 文件放在哪里呢?我应该在某个地方为我的程序文件创建自己的子目录吗?我是否需要将上述输出中的classes 目录复制到与Jar 相同的目录中?这将通过 Makefile 运行,因此用户当然可以覆盖我的选择。

基本上,我希望用户能够运行make && make install,并能够使用launchMyProgram 运行我的应用程序,并且我想放置我的文件(一个 jar、一个“类”文件夹和一个 shell 脚本) 在最典型的地方。

【问题讨论】:

    标签: java unix jar makefile executable-jar


    【解决方案1】:

    最好的方法之一已经被重新发明了很多次,但不幸的是还不是标准的。

    由于 JAR 是允许具有任意前缀的 ZIP 文件,因此您可以将启动器 shell 脚本添加到您的 jar 中,将其标记为可执行文件,并将其视为独立的二进制文件。

    $ echo '#!/bin/bash' > launchMyProgram
    $ echo 'exec java -cp "${0}" com.example.program.Main "${@}"' >> launchMyProgram
    $ cat myJar.jar >> launchMyProgram
    $ chmod +x ./launchMyProgram
    $ ./launchMyProgram
    Hello, world!
    

    更多详情请见Simple & Easy Executable Jars

    您应该能够将 classes/ 文件夹中的所有内容打包到您的 jar 中,并且仍然可以正常工作。


    另外,如果您想为用户提供 RPM 或 DEB 包或其他东西,fpm 让这非常容易。

    【讨论】:

      猜你喜欢
      • 2016-04-21
      • 2011-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多