Я пишу Java-метод для запуска локального сценария bash с использованием Eclipse. Код показывает как показано ниже:
public static void setUp() throws IOException, InterruptedException {
Runtime rt = Runtime.getRuntime();
Process p;
String filePath = new File("").getAbsolutePath();
filePath = filePath.concat("/path/to/the/script");
String command = String.format("sh %s/setUp.sh", filePath);
System.out.println(command);
try {
p = rt.exec(command);
final int errorValue = p.waitFor();
if (errorValue != 0) {
System.out.println("error detected!");
InputStream error = p.getErrorStream();
BufferedReader br = new BufferedReader(new InputStreamReader(error));
String line = "";
while ((line = br.readLine()) != null) {
System.out.println(line);
}
p.destroy();
}
} catch (Exception e) {
e.printStackTrace();
}
}
И файл bash очень прост:
#!/bin/bash
#create a local db and import some data
createdb -U dummy -O dummy -h localhost dbname
psql -h localhost -d dbname --file $1
Проблема
line 4: createdb: command not found
line 5: psql: command not found
Я могу запустить скрипт в терминале и скопировать строки 4 и 5 в терминале, а также запустить команду mvn exec в терминале, чтобы запустить метод. Все работает.
Единственное, что не работает, это то, что оно было выполнено в затмении.
Я открыт для любых мнений или советов, пожалуйста, дайте мне знать, если вам нужна дополнительная информация.
Заранее спасибо за помощь!