Я хочу выполнить скрипт оболочки из Java.У меня есть следующий код
ProcessBuilder pb2 = null;
if (this.args.size() == 0) {
pb2 = new ProcessBuilder(file.getPath());
} else if (this.args.size() > 0) {
pb2 = new ProcessBuilder(file.getPath(), this.args.get(0));
}
Process p2;
p2 = pb2.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(p2.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null) {
log(line);
}
Но я получаю Permission denied
.Я попытался выполнить файл с sh
в начале, но код не работает.
ProcessBuilder pb2 = null;
if (this.args.size() == 0) {
pb2 = new ProcessBuilder("sh", file.getPath());
} else if (this.args.size() > 0) {
pb2 = new ProcessBuilder("sh", file.getPath(), this.args.get(0));
}
Process p2;
p2 = pb2.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(p2.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null) {
log(line);
}
Я мог бы дать ему разрешение с chmod a+x
, но идея в том, чтобы сделать это автоматически.
Обновление: я попробовал первый код с file.setExecutable(true)
, но ничего не происходит, я не получаю Permission Denied
, но файл не выполняется