Я пытался заставить приложение действовать как клиент ssh / scp, чтобы упростить передачу файлов с моего ноутбука на рабочий стол, и в настоящее время мне удалось получить вывод команды ls и получить дерево файлов для хоста и удаленный пользователь, однако для этого требуется ввод данных в терминале, с которым я запускаю приложение.
Возможно ли встроить окно терминала в графический интерфейс, поскольку я занимался созданием интерпретатора, однако такие вещи, как завершение табуляции и запуск, например, python3, не работают. Я также надеюсь в полной мере использовать терминал и иметь возможность запускать такие команды, как vim, а не просто печатать вывод команд, что у меня сейчас есть.
Мой код для выполнения команд:
public void processCmd(String command) {
if (command.equals("exit")) {
System.exit(0);
} else if (command != null && !command.isEmpty()) {
execCommand(command);
}
}
public void execCommand(String input) {
String result = null;
try {
Runtime r = Runtime.getRuntime();
Process p = r.exec(input);
BufferedReader in =
new BufferedReader(new InputStreamReader(p.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine);
result += inputLine;
}
in.close();
} catch (IOException e) {
System.out.println("Error");
}
}
Основная проблема заключается в том, что когда запускается что-либо вроде python или vim, приложение зависает и ничего не делает, python даже не отображается в терминале, однако, если я запускаю vim, он меняет экран терминала (не в app) в основном для vim, но без нижней панели.
Знаете ли вы какие-либо примеры того, как это делается, поскольку я не могу найти ни одного?
Вы не указали, почему python3 не работает, и не опубликовали какой-либо код, что затрудняет ответ. Всегда при разветвлении и управлении другими процессами в Java полезно ознакомиться с классом Процессбилдер, который может помочь вам настроить stdin/stderr для управления из Java.
Python заставит приложение зависнуть и ничего не отобразит в графическом интерфейсе или терминале, однако запустит процесс python, который можно просмотреть в мониторе активности.




"Можно ли..." да. Ответ на такой вопрос почти всегда «да». С другой стороны, количество усилий, которые вы должны приложить, варьируется.