【问题标题】:How to convert "jar" to Linux executable file?如何将“jar”转换为 Linux 可执行文件?
【发布时间】:2017-11-09 16:11:58
【问题描述】:

我知道如何将“jar”转换为 Windows 可执行文件 (.exe)。但我想知道如何将“jar”转换为 Linux 可执行文件(.?)。我已经搜索了谷歌,但没有得到我想要的确切答案,请帮忙。

【问题讨论】:

  • “Linux 可执行文件”是什么意思?
  • 您可以通过shell命令执行jar文件,就像linux中的.sh文件或windows中的.bat文件一样。
  • 我知道如何在 Linux 中运行“jar”文件,但我需要将其转换为 (.sh) linux 应用程序文件。像windows中的(.exe)文件
  • 你试过了吗:sudo chmod +x myFile.jar
  • 如果必须屏蔽应用程序,为什么不直接使用触发 jar 文件的脚本 (.sh)?为什么还是不能使用java -jar <file> 命令?

标签: java linux jar executable-jar


【解决方案1】:

我想知道如何将“jar”转换为 Linux 可执行文件(.?)。

Linux 不像 Windows 那样具有可执行文件。在 Linux 中,我们有二进制文件和脚本。脚本使用解释器运行; Ruby 和 Python 等语言。二进制文件是编译后的代码文件,它们可以是库或整个程序。二进制文件和脚本都可以执行。

要使程序在 Linux 中可执行,请在命令中键入 行。

$ chmod +x myProgram

或者,您可以打开文件首选项并在 权限部分。

由于 Linux 没有 .exe 文件或类似文件,我们必须解决其他问题。 Linux 和其他类 Unix 操作系统有一个叫做 bash 的 shell;通常在参考 Linux 和 Mac 时称为命令行或终端。我们想创建一个可以作为整个程序运行的文件,而不必调用$ java -jar myProgram.jar。为了告诉 bash 为文件启动脚本环境,我们使用 hashbang。这是文件的第一行,它指示 bash 寻找解释器将文件的其余部分发送到。对于 bash 脚本,例如 Windows 上的批处理脚本,我们将使用 #!/bin/bash 启动文件。 #! (hashbang) 之后的路径告诉 bash 要寻找解释器。对于.jar,请制作hashbang #!/usr/bin/java -jar,然后将.jar 放入带有hashbang 的文件中。这一切都可以在 Linux 的终端上完成。

使用 java jar hashbang 创建一个文件。

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

我们已将 hashbang 作为字符串写入新文件 myBin。

将 jar 写入文件。

$ cat my.jar >> myBin

>> 将 jar 附加到接收文件中。

这将创建一个包含 bash hashbang 和附加到它的 jar 的文件。接下来将myBin设置为可执行并尝试运行程序。

$ chmod +x myBin
$ ./myBin

【讨论】:

  • 这确实有效。你应该得到 9716278 个赞
【解决方案2】:

创建一个包含以下内容的 sh 包装文件并使其可执行:

#!/bin/bash

java -jar <your-jar>

可选地添加一些 vm 参数。

也许有一些工具可以生成这样的文件,但我认为手动完成它的工作量很小。

【讨论】:

  • 虽然上面的答案更彻底一些,但它也有点迂腐,相应地让一些人感到困惑并且相当离题。这个答案是最准确和最直接有用的。我只想通过增强实际命令来澄清:“java -jar $*”这允许脚本从任何通用 bin 目录工作并将任何参数传送到 JAR 以进行特定处理。
【解决方案3】:

您始终可以通过 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

【讨论】:

  • 它不起作用,至少在 Ubuntu 上是这样。即使有执行权限,也会出现cannot execute binary file: Exec format error 之类的错误。
【解决方案4】:

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

【讨论】:

    【解决方案5】:

    虽然制作一个 shell 脚本是可行的,但在大多数情况下,这似乎有点矫枉过正。为什么不直接使用别名并将其放入您的.bashrc 或.bash_aliases 文件中?像这样:

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

    (由于我的解决方案没有在这里作为答案,我的“为什么”是一个有点真实的问题:是否有一些隐藏的危险或我缺少的功能?或者更多的是坚持对OP问题的最严格解释?)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-28
      • 2020-07-10
      • 2014-01-17
      • 2015-06-08
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多