如何将.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

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...