我一直在寻找许多类似的帖子,但我仍然找不到我的答案。我想将一个.java程序转换成一个Linux可执行文件,不带.jar扩展名。我该怎么做?我试图使用Launch 4j java Package 器,JWrapper,IzPack,制作一个.sh,制作一个.bat,使用java -jar myFile.jar等运行它。但都不管用有些程序很复杂,很难调试。有没有直接的方法可以将.java文件或.jar文件转换为Linux可执行文件?
我需要将这个程序作为一个Linux可执行文件整体传递到另一个以这个程序为参数的程序中。
4条答案
按热度按时间ecr0jaav1#
假设您有一个名为helloworld.jar的可运行jar
将下面的Bash脚本复制到名为stub.sh的文件中
然后将jar文件附加到保存的脚本中,并使用以下命令授予文件的执行权限:
就这样!
现在,您只需在shell终端上输入helloworld.run即可执行应用程序。
该脚本足够智能,可以透明地将任何命令行参数传递给Java应用程序。
摄影:Paolo Di Tommaso
来源:https://coderwall.com/p/ssuaxa/how-to-make-a-jar-file-linux-executable
ivqmmu1c2#
我找到了一个解决方案,这正是我在几个小时的搜索和尝试后想要的。在Linux中使用gcj命令。
它的工作原理类似于C的gcc和C的g,它们将C或C++程序编译成可执行文件。
首先使用终端安装gcj,输入以下命令:
之后,cd到.jar文件所在的目录中,假设.jar文件是myFile.jar,然后执行:
编译.jar文件。它应该像一个可执行文件一样工作,只需在命令行中运行它,如下所示:
f0ofjuux3#
将jar文件转换为Linux可执行文件的另一个简单技巧是在jar文件之前放置一个shebang。
假设我们有一个hello.jar文件。
您可以按照以下步骤创建可执行文件。
然后,您将能够直接执行hello文件。
qjp7pelc4#
你可以做的是做一个很小的C程序,它调用一个exec函数(参见man 3 exec)到“java”二进制文件中,传递“-jar”,“xxx.jar”作为参数,参见Forking a new process in C++ and executing a .jar file。