gpt4 book ai didi

JAR 中捆绑的 Java 执行 Shell 脚本

转载 作者:太空狗 更新时间:2023-10-29 22:35:11 24 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Executing a shell script inside a jar file. How to extract?

我有一个 shell 脚本打包到我的“引擎”包中的 JAR 文件中。

在我的程序中,我使用 Process 和 ProcessBuilder 运行一个 shell 命令。这一切都很好。

如果我在我的计算机上指定了 shell 脚本的路径,那么程序就可以正常工作。但是,如果我将 shell 脚本打包到我的 JAR 中并像这样访问它:

scriptLocation = this.getClass().getResource("/engine/shell-script.sh").toString();

然后运行程序,然后我得到以下错误:

java.io.IOException: Cannot run program "file:/Users/USERNAME/Desktop/Application-Name.jar!/engine/shell-script.sh": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
at java.lang.Runtime.exec(Runtime.java:593)
at java.lang.Runtime.exec(Runtime.java:431)
at java.lang.Runtime.exec(Runtime.java:328)
at engine.Download$1.run(Download.java:39)
at java.lang.Thread.run(Thread.java:680)
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:53)
at java.lang.ProcessImpl.start(ProcessImpl.java:91)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
... 5 more

我开始认为这是不可能的,我非常想提供这个 shell 脚本作为应用程序的一部分,可以吗?

提前谢谢大家。

========更新==========

我最终解决了这个问题。 Shell 无法在 JAR 包中执行脚本,它与 Java 无关,而是 shell。我通过执行以下操作解决了这个问题:

Java 有一个 createTempFile() 方法(可以选择在应用程序终止后删除该文件),调用它,然后将您要访问的 JAR 包中的文件写入此临时文件。然后您在本地文件系统上有了 shell 脚本,并且能够执行该脚本。

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