gpt4 book ai didi

java - 为 Jar 文件编写 Unix 安装程序

转载 作者:太空宇宙 更新时间:2023-11-04 14:48:22 25 4
gpt4 key购买 nike

我编写了一个 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、一个“classes”文件夹和一个 shell 脚本)位于最典型的位置。

最佳答案

最好的方法之一已经被重新发明了很多次,但遗憾的是尚未成为标准。

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

$ 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让这变得非常容易。

关于java - 为 Jar 文件编写 Unix 安装程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24110310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com