gpt4 book ai didi

java - 运行 JAR 文件而不直接调用 `java`

转载 作者:IT老高 更新时间:2023-10-28 20:37:08 26 4
gpt4 key购买 nike

我正在部署一个用 Java 编写的命令行工具,它接受命令行参数。我把它打包成一个 JAR 文件,因为有一个文件很方便。

问题是要运行它,你必须先调用 java -jar (filename) (args),这很烦人。

我目前的方法是使用一个简单的 bash 脚本来启动它,但这并不理想。

是否有(在 Linux、Ubuntu Server 中)制作一个可以自行调用 Java VM 的 JAR 文件?我一直在寻找一个 shebang,但找不到一个(这当然是有道理的,因为它是编译代码)。

这就是我想要做的:myprogram.jar arg1 -arg2 而不是这个:java -jar myprogram.jar arg1 -arg2

谢谢,
布赖恩

最佳答案

.zip 文件格式(.jar 格式所基于的)在文件中附加了额外数据的情况下似乎很健壮。因此,如果您使用 cat 命令在 jar 文件中的 zip 数据之前放置一个 shebang,并使该文件可执行,那么您可以像调用任何普通 shell 脚本一样调用 jar 文件。

例如:(请注意,unzip -l 命令只是为了说明这一点。它不会改变 .jar 的任何内容,并且在您实际执行此过程时可以省略。)

[bloom@cat-in-the-hat ~]$ java -jar tex4ht.jar 
xtpipes (2009-01-27-22:19)
Command line options:
java xtpipes [-trace] [-help] [-m] [-E] [-s script_file] [-S script_map]
[-i script_dir] [-o out_file]
[-x...ml2xml_arg...] (-d in_data | in_file)
-m messages printing mode
-E error messages into exception calls
in_data XML data directly into the command line

[bloom@cat-in-the-hat ~]$ cat header.txt
#!/usr/bin/java -jar
[bloom@cat-in-the-hat ~]$ cat header.txt tex4ht.jar > tex4ht_exe.jar
[bloom@cat-in-the-hat ~]$ unzip -l tex4ht_exe.jar
Archive: tex4ht_exe.jar
warning [tex4ht_exe.jar]: 21 extra bytes at beginning or within zipfile
(attempting to process anyway)
Length Date Time Name
--------- ---------- ----- ----
0 2009-07-09 15:48 META-INF/
42 2009-07-09 15:47 META-INF/MANIFEST.MF
0 2009-07-09 15:48 ./
0 2009-07-09 15:48 tex4ht/
2217 2009-07-09 15:48 tex4ht/DbUtilities.class
2086 2009-07-09 15:48 tex4ht/GroupMn.class
6064 2009-07-09 15:48 tex4ht/HtJsml.class
4176 2009-07-09 15:48 tex4ht/HtSpk.class
1551 2009-07-09 15:48 tex4ht/JsmlFilter.class
2001 2009-07-09 15:48 tex4ht/JsmlMathBreak.class
6172 2009-07-09 15:48 tex4ht/OoFilter.class
3449 2009-07-09 15:48 tex4ht/OoUtilities.class
1468 2009-07-09 15:48 tex4ht/OomFilter.class
346 2009-07-09 15:48 xtpipes.class
0 2009-07-09 15:48 xtpipes/
4071 2009-07-09 15:48 xtpipes/FileInfo.class
6904 2009-07-09 15:48 xtpipes/InputObject.class
25906 2009-07-09 15:48 xtpipes/Xtpipes.class
1238 2009-07-09 15:48 xtpipes/Xtpipes$5.class
713 2009-07-09 15:48 xtpipes/Xtpipes$3.class
1533 2009-07-09 15:48 xtpipes/Xtpipes$1.class
709 2009-07-09 15:48 xtpipes/Xtpipes$7.class
1294 2009-07-09 15:48 xtpipes/XtpipesEntityResolver.class
1235 2009-07-09 15:48 xtpipes/Xtpipes$6.class
3367 2009-07-09 15:48 xtpipes/Xtpipes$4.class
709 2009-07-09 15:48 xtpipes/Xtpipes$8.class
1136 2009-07-09 15:48 xtpipes/Xtpipes$2.class
875 2009-07-09 15:48 xtpipes/XtpipesPrintWriter.class
1562 2009-07-09 15:48 xtpipes/XtpipesUni.class
0 2009-07-09 15:48 xtpipes/util/
5720 2009-07-09 15:48 xtpipes/util/ScriptsManager.class
1377 2009-07-09 15:48 xtpipes/util/ScriptsManagerLH.class
--------- -------
87921 32 files
[bloom@cat-in-the-hat ~]$ chmod +x tex4ht_exe.jar
[bloom@cat-in-the-hat ~]$ ./tex4ht_exe.jar
xtpipes (2009-01-27-22:19)
Command line options:
java xtpipes [-trace] [-help] [-m] [-E] [-s script_file] [-S script_map]
[-i script_dir] [-o out_file]
[-x...ml2xml_arg...] (-d in_data | in_file)
-m messages printing mode
-E error messages into exception calls
in_data XML data directly into the command line

关于java - 运行 JAR 文件而不直接调用 `java`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1667830/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com