java程序中开启线程执行.sh脚本(启动一个jar),报command not found,但是控制台直接执行.sh是可以执行的

青烟尽_梦离城 2018-06-14 07:28:54
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());
}
}
...全文
1181 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
已经是绝对路径,.sh文件绝对路径,java/bin路径,jar绝对路径我都有添加过
oyljerry 2018-06-14
  • 打赏
  • 举报
回复
用完整路径执行sh。
stacksoverflow 2018-06-14
  • 打赏
  • 举报
回复
类似于这样的写法 ProcessBuilder builder=new ProcessBuilder("/bin/sh","-c","/home/songjy.sh a b >/home/songjy.log 2>&1");

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧