如何将"jar"文件转换为Linux可执行文件?

9

我知道如何将"jar"文件转换为Windows可执行文件(.exe),但我想知道如何将"jar"文件转换为Linux可执行文件( . ? )。我已经在谷歌上搜索了很久,但没有找到我想要的确切答案,请帮助我完成这项任务。


“Linux可执行文件”是什么意思? - Michael Markidis
你可以通过shell命令来执行jar文件,就像在Linux中执行.sh文件或在Windows中执行.bat文件一样。 - dabaicai
你尝试过吗: sudo chmod +x myFile.jar - Abhishek Agarwal
为什么不直接使用一个脚本(.sh)来触发jar文件,如果你必须要掩盖应用程序的话?为什么不能使用java -jar <file>命令呢? - vegaasen
我必须将“jar”文件隐藏起来,不让用户看到。 - lekshmi
显示剩余4条评论
6个回答

29
我想知道如何将“jar”转换为Linux可执行文件(.?)。 在Linux中,可执行文件的方式与Windows不同。在Linux中,我们有二进制文件和脚本。脚本是由解释器运行的,例如Ruby和Python等语言。二进制文件是编译代码的文件,它们可以是库或整个程序。二进制文件和脚本都可以是可执行文件。 要使Linux中的程序可执行,请在命令行中输入以下内容。
$ chmod +x myProgram

或者您可以打开文件首选项并在权限部分设置可执行文件。

由于Linux没有.exe文件或类似物,我们需要想出其他办法。Linux和其他类Unix操作系统有一个称为bash的shell;在Linux和Mac中通常称为命令行或终端。我们想创建一个可以作为整个程序运行的文件,而不必调用$ java -jar myProgram.jar。为了告诉bash为文件启动脚本环境,我们使用哈希标记。这是文件的第一行,指示bash在哪里查找解释器以发送其余部分的内容。对于像Windows上的批处理脚本一样的bash脚本,我们将文件以#!/bin/bash开头。在#!(哈希标记)之后的路径告诉bash在哪里查找解释器。对于.jar文件,将哈希标记设置为#!/usr/bin/java -jar,然后将.jar添加到具有哈希标记的文件中。这可以在Linux终端中完成。

创建一个带有java jar哈希标记的文件。

$ echo '#!/usr/bin/java -jar' > myBin

我们已将 hashbang 写为字符串到新文件 myBin 中。

将 jar 写入文件中。

$ cat my.jar >> myBin
>> 将jar附加到接收文件。这将创建一个具有bash hashbang和附加的jar的文件。接下来,将myBin设置为可执行文件并尝试运行程序。
$ chmod +x myBin
$ ./myBin

7
创建一个sh包装文件,内容如下,并使其可执行:
```bash #!/bin/sh
# your commands here ```
请注意,本文不提供解释。
#!/bin/bash

java -jar <your-jar>

可选择添加一些虚拟机参数。

也许有一些工具可以生成这样的文件,但我认为手动做这件事并不费力。


尽管最佳答案更为详尽,但也有些学究气,因此对某些人来说会有些困惑,并且离题较远。这个答案是最准确和立即有用的。我只想通过增强实际命令来澄清:“java -jar <full-jar-path> $*”,这样可以让脚本在任何通用的bin目录中工作,并将任何参数传递给JAR进行特定处理。 - Russ Bateman

2

尝试使用packr工具。它可以帮助您从Java应用程序创建本机Linux可执行文件。


1

您可以通过执行 java -jar myFile.jar 来运行一个 jar 文件。

然而,要使 jar 文件本身可执行,您需要设置可执行位,正如提示中所示。chmod +x /path/to/your/file/myFile.jar 将完成此操作。

之后,您可以执行 ./myFile.jar 来运行它。

man chmod 将为您提供有关 chmod 工作原理的信息。

来源:AskUbuntu 上的 How can I make a .jar file executable? 。回答者:Gary


2
它不起作用,至少在Ubuntu上是这样。即使给予执行权限,也会出现“无法执行二进制文件:执行格式错误”的错误。 - MasterMind

0

虽然编写一个shell脚本可以解决问题,但在大多数情况下似乎有点过度。为什么不只是使用别名并将其放入您的.bashrc.bash_aliases文件中呢?像这样:

alias whatever='java -jar /path/to/whatever.jar'

(由于我的解决方案没有出现在这里的答案中,我的“为什么”是一个相当真诚的问题:我是否忽略了某些隐藏的危险或功能?还是更多地遵循OP问题的最严格解释?)


0
可能在这种情况下更合适和准确的做法是创建一个桌面配置文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接