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

nhhxz33t  于 2023-10-18  发布在  Eclipse
关注(0)|答案(4)|浏览(138)

我一直在寻找许多类似的帖子,但我仍然找不到我的答案。我想将一个.java程序转换成一个Linux可执行文件,不带.jar扩展名。我该怎么做?我试图使用Launch 4j java Package 器,JWrapper,IzPack,制作一个.sh,制作一个.bat,使用java -jar myFile.jar等运行它。但都不管用有些程序很复杂,很难调试。有没有直接的方法可以将.java文件或.jar文件转换为Linux可执行文件?
我需要将这个程序作为一个Linux可执行文件整体传递到另一个以这个程序为参数的程序中。

ecr0jaav

ecr0jaav1#

假设您有一个名为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 > helloworld.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

ivqmmu1c

ivqmmu1c2#

我找到了一个解决方案,这正是我在几个小时的搜索和尝试后想要的。在Linux中使用gcj命令。
它的工作原理类似于C的gcc和C的g,它们将C或C++程序编译成可执行文件。
首先使用终端安装gcj,输入以下命令:

sudo apt-get install gcj-jdk

之后,cd到.jar文件所在的目录中,假设.jar文件是myFile.jar,然后执行:

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

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

./newNameofTheFile
f0ofjuux

f0ofjuux3#

将jar文件转换为Linux可执行文件的另一个简单技巧是在jar文件之前放置一个shebang。
假设我们有一个hello.jar文件。

$ java -jar hello.jar
hello world!

您可以按照以下步骤创建可执行文件。

$ echo "#! /usr/bin/env java -jar" > hello
$ cat hello.jar >> hello
$ chmod +x hello

然后,您将能够直接执行hello文件。

$ ./hello
hello world!
qjp7pelc

qjp7pelc4#

你可以做的是做一个很小的C程序,它调用一个exec函数(参见man 3 exec)到“java”二进制文件中,传递“-jar”,“xxx.jar”作为参数,参见Forking a new process in C++ and executing a .jar file

相关问题