java程序中开启线程执行.sh脚本(启动一个jar),报command not found,但是控制台直接执行.sh是可以执行的,这个设么原因
ProcessBuilder builder = new ProcessBuilder("./execute.sh");
builder.directory(new File(execPath));
builder.redirectErrorStream(true);
try {
final Process process = builder.start();
final BlockingQueue<String> queue = new ArrayBlockingQueue<>(1);
myProcess = new MyProcess(process, queue);
processMap.put(threadName, myProcess);
new Thread(new Runnable() {
@Override
public void run() {
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
ContextUtil contextUtil=new ContextUtil();
while (true) {
String data = null;
try {
data = br.readLine();
} catch (IOException e) {
e.printStackTrace();
}
try {
if (data == null) {
logger.debug("read data is null");
data = "-1";
}
queue.put(data);
if (data.equals("-1")) {
break;
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
} catch (IOException e) {
logger.error("create process error: {}", e.fillInStackTrace().toString());
}
}