Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将项目导出为可运行jar时无法调用外部Bash程序_Java_Eclipse_Bash - Fatal编程技术网

Java 将项目导出为可运行jar时无法调用外部Bash程序

Java 将项目导出为可运行jar时无法调用外部Bash程序,java,eclipse,bash,Java,Eclipse,Bash,我有一个需要外部bash脚本才能工作的java项目。它在Eclipse中工作得非常好,但一旦我将其导出为可运行的jar,就会出现以下错误:无法运行程序“src/script.sh”:error=2,没有这样的文件或目录 我试过: Runtime.getRuntime().exec("script.sh"); 以及 new ProcessBuilder("src/script.sh").start(); Bash脚本不接受任何输入,也不返回任何输出您的脚本隐藏在jar文件中,并且不作为独立文件

我有一个需要外部bash脚本才能工作的java项目。它在Eclipse中工作得非常好,但一旦我将其导出为可运行的jar,就会出现以下错误:无法运行程序“src/script.sh”:error=2,没有这样的文件或目录

我试过:

Runtime.getRuntime().exec("script.sh");
以及

new ProcessBuilder("src/script.sh").start();

Bash脚本不接受任何输入,也不返回任何输出

您的脚本隐藏在jar文件中,并且不作为独立文件存在,这就是为什么Java不能“执行”它。您需要在运行时使用resources API读取它,然后将其保存到某个(临时?)目录中,设置其可执行权限,然后使用ProcessBuilder或类似的工具运行它。

。顺便说一句,糟糕的程序充满了系统(“CLS”)。还有什么功能?如果您不知道在运行jar时需要将脚本放在哪里,请使用绝对值paths@thatotherguy它成功了,但不幸的是,我计划分发我的应用程序,所以如果我使用绝对路径,只有我才能在本地机器上运行它。如果没有指定路径,将搜索$path。如果指定了相对路径,则它将相对于当前工作目录(与jar的位置无关)。但是类路径在可运行jar文件中会有所不同。我建议您定义shell文件的绝对路径或从java参数获取路径。