Не зная ничего о вашей программе Java или приложении, которое вы хотите выполнить и подаете с помощью команд, это выстрел в темноте. Кроме того, вся обработка ошибок опущена. Я использую tee для запуска программы, потому что это удобно.
public class Command {
private static OutputStream os;
private static OutputStreamWriter osw;
private static Process process;
public static void start(){
try {
ProcessBuilder pb = new ProcessBuilder("/usr/bin/tee", "x.dat");
process = pb.start();
os = process.getOutputStream();
osw = new OutputStreamWriter(os);
} catch(Exception e){
// error handling
} catch(Error e){
// error handling
}
}
public static void terminate() throws Exception {
process.waitFor();
}
public static void command(String str) throws Exception {
String cmd = str + System.lineSeparator();
osw.write(cmd, 0, cmd.length());
osw.flush();
}
Я проверил это с помощью:
Command.start();
Command.command("line 1");
Thread.sleep(2000);
Command.command("line 2");
Thread.sleep(2000);
Command.command("line 3");
Command.terminate();
Линии могут быть найдены на x.dat.
program -> program – RickyA
Если вы можете выполнить команду, переданную как аргумент командной строки, вы можете прочитать команду из стандартного ввода/Консоли и выполнить ее. В чем проблема? – laune
Я хочу использовать среду выполнения для загрузки программы с использованием ./startprogram. Затем я хочу использовать другое время выполнения где-нибудь позже, чтобы выполнить команду программ из новой среды выполнения. Но проблема в том, что программа больше не загружается из другой среды выполнения, например, когда я запускаю ее с консоли. – Broadwell