微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将.java或.jar文件转换为Linux可执行文件没有.jar扩展名,这意味着它不是.jar文件

我一直在寻找许多类似的post,但我仍然无法find我的答案。 我想将一个.java程序转换成一个Linux可执行文件,没有.jar扩展名。 我该怎么做? 我正在尝试使用launch4j java包装,JWrapper,IzPack,制作一个.sh,制作一个.bat,使用java -jar myFile.jar等来运行它,但是它们都没有工作。 有些程序很复杂,很难debugging。 有没有简单的方法将.java文件或.jar文件转换为Linux可执行文件

我需要将这个程序作为一个Linux可执行程序整体传递给另一个以此程序为参数的程序。

如何维护与应用程序依赖,包括我自己的自定义库?

使用Ubuntu Preseed和打包器的无密码sudo

在Windows上使用内置python构build软件安装程序

为Linux封装专有软件

阻止应用程序的所有其他input,并通过Java中的包装器进行控制

我找到了一个解决方案,这正是我经过几个小时的搜索和尝试后所想要的。 它是在linux中使用gcj命令。

它的作用类似于C的gcc和C ++的C ++,它们将C或C ++程序编译为可执行文件

首先使用终端键入以下命令来安装gcj:

sudo apt-get install gcj-jdk

之后,进入.jar文件所在的目录,比如说.jar文件是myFile.jar,然后执行

gcj myFile.jar -o newNameofTheFile --main=theMainClassNameofTheFile

编译.jar文件。 而且它应该像一个可执行文件一样在命令行中运行,如下所示:

./newNameofTheFile

你可以做的是做一个小小的C程序,它调用一个exec函数(参见man 3 exec)到“java”二进制文件,传递“-jar”,“xxx.jar”作为参数,另请参阅用C ++分叉一个新进程并执行一个.jar文件

假设您有一个名为helloworld.jar的可运行jar

将下面的Bash脚本复制到名为stub.sh的文件

#!/bin/sh MYSELF=`which "$0" 2>/dev/null` [ $? -gt 0 -a -f "$0" ] && MYSELF="./$0" java=java if test -n "$JAVA_HOME"; then java="$JAVA_HOME/bin/java" fi java_args=-Xmx1g exec "$java" $java_args -jar $MYSELF "$@" exit 1

然后将jar文件附加到保存的脚本中,并将执行权限授予使用以下命令生成文件

cat stub.sh helloworld.jar > hello.run && chmod +x helloworld.run

就这样!

现在你可以在shell终端上输入helloworld.run来执行应用程序。

该脚本足够聪明,可以透明地将任何命令行参数传递给Java应用程序。

积分:Paolo Di Tommaso

资料来源: https : //coderwall.com/p/ssuaxa/how-to-make-a-jar-file-linux-executable

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐