- Оно нельзя закрыть с помощью мыши или сочетания клавиш (хотя его размер можно изменить).
- При изменении размера график в нем пропадает.
Соответствующие детали:
Код: Выделить всё
$ uname -a
Linux 1Latitude3420 5.15.0-86-generic #96~20.04.1-Ubuntu SMP Thu Sep 21 13:23:37 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Код: Выделить всё
$java -version
java -version
java version "17.0.1" 2021-10-19 LTS
Java(TM) SE Runtime Environment (build 17.0.1+12-LTS-39)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.1+12-LTS-39, mixed mode, sharing)
Код: Выделить всё
ProcessBuilder pb = new ProcessBuilder("/usr/bin/R","--slave","-q","--save");
pb.redirectErrorStream(true);
Код: Выделить всё
options(device=x11); plot(1:9)
Буду очень признателен за любую помощь.
Арнаб.
PS: Этот пост SO выглядит похожим, но единственный (непринятый) ответ предлагает обновиться до Java 7 или более поздней версии. У меня уже есть Java 17.
----- Минимальный рабочий пример -----
Код: Выделить всё
import java.io.*;
public class RConn {
public static void main(String args[]) throws Exception {
OutputStream toR;
BufferedReader fromR;
PrintWriter sink;
Process p;
ProcessBuilder pb = new ProcessBuilder("/usr/bin/R","--slave","-q","--save");
pb.redirectErrorStream(true);
p = pb.start();
fromR = new BufferedReader(
new InputStreamReader(
p.getInputStream()
)
);
toR = p.getOutputStream();
if(toR!=null) {
System.err.println("Aha! Connected to R!");
}
else {
throw new Exception("Sorry, could not connect to R!");
}
toR.write(("options(device=x11); plot(1:9)\n").getBytes());
toR.flush();
while (true) {
String line = fromR.readLine();
}
}
}
Если я добавлю Sys.sleep(20) в качестве последней строки в код R. Затем в течение этих 20 секунд размер окна можно будет правильно изменить (без исчезновения графика). Но плохое поведение возвращается через 20 секунд. Похоже, что бесконечный цикл в конце вызывает зависание. Но мне это нужно, чтобы не дать R умереть (и унести с собой окно x11).
Подробнее здесь: https://stackoverflow.com/questions/786 ... essbuilder