我尝试从Java执行bash脚本,它返回错误< code >/bin/bash:'/home/卡尼/netbeans projects/Parallel Framework/process-executor . sh ':没有这样的文件或目录,我正在使用netbeans8开发ubuntu 14.04
这是我的代码:
public class Process {
public static void main(String[] args) {
try {
ProcessBuilder pb = null;
Process p;
String cmd2 = "";
String workingDir = System.getProperty("user.dir");
System.out.println(""+workingDir);
String scriptloc="'"+workingDir+"/process-executor.sh'";
String cmd[] = {"/bin/bash",scriptloc , "workspace/ForDemo.java", "ForDemo.java", "ForDemo"};
for (int i = 0; i <= cmd.length-1; i++) {
cmd2 += " "+cmd[i];
}
System.out.println("" + cmd2);
pb = new ProcessBuilder(cmd);
pb.directory(new File(workingDir));
p = null;
try {
p = pb.start();
} catch (IOException ex) {
Logger.getLogger(Process.class.getName()).log(Level.SEVERE, null, ex);
}
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
// read the output from the command
System.out.println("Here is the standard output of the command:\n");
String s = null;
String output = "";
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
output = "";
// read any errors from the attempted command
System.out.println("Here is the standard error of the command (if any):\n");
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}
} catch (IOException ex) {
Logger.getLogger(Process.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
但是当我从终端执行此命令时,它会执行脚本bin/bash '/home/nika/NetBeansProjects/Parallel Framework/process-executor.sh' workspace/ForDemo.java ForDemo.java ForDemo
我的脚本还有另一个问题,它不执行< code>cd命令,而是说< code > '/home/卡尼/netbeans projects/Parallel Framework/workspace/for demo . Java/':没有这样的文件或目录
我的脚本内容如下
#!/bin/bash
PATH=/bin:/usr/bin:/usr/local/bin
WORK=${PWD}/workspace/
echo "'${WORK}${2}'"
cd "'${WORK}${2}/'"
javac $2
java $3
echo "$3"
我的目录层次结构就像
-并行框架 --
process-executor.sh
-- 工作区 --- ForDemo
.java (目录)
---- ForDemo.java
在这种情况下,不要在脚本路径中使用单引号,即。e.像这样修复脚本变量:
String scriptloc= workingDir + "/process-executor.sh";
如果您在命令行中执行此操作(以转义路径中的空格字符),则单引号是必需的,但在这种情况下不是必需的,因为您已经在 cmd[]
数组中隐式指定此类路径只是一个“单元”
我在尝试编译 eXo 平台时遇到麻烦。 错误消息是: < code >原因:java.io.IOException:无法运行程序“/exo/platform-public-distributions-develop/PLF-community-Tomcat-standalone/target/platform-community-5.0 . x-SNAPSHOT/platform-communit
问题内容: 鉴于Java 9已经来临,我们终于可以拥有Java REPL了,我希望有一种方法可以在脚本中添加shebang并对其进行解释。 我尝试创建: 然而,这给出了: 事实证明,OpenJDK https://bugs.openjdk.java.net/browse/JDK-8167440中对此有增强要求。 还有其他方法吗? 问题答案: 用 作为的第一行。该脚本可能如下所示: 当然,命令行选项
我试图从一个简单的BASH脚本执行一个简单的PHP脚本。这个网站上的答案不能回答我的问题。 这是我的BASH脚本 这是我的PHP脚本 从命令行运行BASH脚本时,出现以下错误。 我试过键入/usr/bin/php-q/home/username/subfolder/durable2。这很好。它跑起来了
问题内容: 假设我在网址“ http://mywebsite.com/myscript.txt”处有一个包含脚本的文件: 而且我想先运行该脚本而不先将其保存到文件中。我该怎么做呢? 现在,我已经看到了语法: 但这似乎不像我保存到文件然后执行时那样。例如,readline不起作用,而输出仅为: 同样,我尝试过: 具有相同的结果。 最初我有一个解决方案,例如: 但这似乎草率,我想要一个更优雅的解决方案
问题内容: 我试图找出一种从Golang执行脚本(.sh)文件的方法。我发现了几种简单的执行命令的方法(例如os / exec),但是我要执行的是执行整个sh文件(该文件设置了变量等)。 为此,使用标准的os / exec方法似乎并不简单:尝试输入“ ./script.sh”并将脚本内容加载到字符串中都不能用作exec函数的参数。 例如,这是我要从Go执行的sh文件: 从Go程序中: 其中mong
问题内容: 自寻找以来已经有一段时间了,但找不到解决方案。我试图在.jar文件中的Linux上执行bash命令。为此,我尝试了很多事情,包括: 因此,当我单击.jar文件时,我希望程序打开bash并执行命令(java -jar …),以执行程序的另一部分。 关于如何做的任何想法? 问题答案: 要了解这一点,您首先需要了解如何在shell提示符下运行该命令。 请注意双引号在哪里。第一个参数是。第二个