Есть ли способ отключить вывод SCPSolver? - PullRequest
0 голосов
/ 04 мая 2019

Я пишу приложение на Java, которое использует следующую внешнюю библиотеку: SCPSolver (ссылка: http://scpsolver.org/).

. Библиотека выглядит как оболочка для библиотеки переменного тока и выводит некоторую информацию о стандарте.Моя проблема в том, что я хочу, чтобы мое приложение получало чистый вывод: я ищу способ либо

a. Очистить консоль, которая может быть либо системной (windows) консолью, либо консолью eclipse;или

б) прямо вверх, чтобы библиотека не печатала на выходе.

Относительно точки a:

Я пробовал оба с использованием

Runtime.getRuntime().exec("cls");

и

System.out.print("\033[H\033[2J");

и ни одна из них не работает.

Я пробовал печатать символы "\ b", но безрезультатно. Во всех этих случаях я получаю бредв выводе.

Относительно точки b:

Я пытался перенаправить System.out на новый PrintStream, но он не работает. Скорее всего, потому чтобиблиотека является оболочкой для библиотеки ac, а библиотека c печатает обход System.out в java.Таким образом, я не совсем уверен, что этот подход будет работать, так как я не контролирую, что делает библиотека.Я искал в документации способ отключения вывода и пока не нашел ничего полезного.

Возможно полезное примечание: Звонок

System.out.close();

перед тем, как попросить решателя решить проблему LP, вывод результатов не отображается.Конечно, проблема в том, что у меня больше нет потока для вывода на стандартный вывод.Может быть, решение может быть получить другой поток на той же консоли?Хотя я понятия не имею, как это сделать.

Вкратце:

Вызов lpw.solve () - это то, что печатает нежелательный вывод:

LPWizard lpw = new LPWizard();

// ...

LPSolution solution = lpw.solve();

Текущий вывод:

GLPK Simplex Optimizer, v4.65 4 строки, 4 столбца, 8 ненулевых 0: obj = 0.000000000e + 000 inf = 2.700e + 001 (4) 3: obj = 1.350000000e + 001 inf = 0,000e + 000 (0) НАЙДЕНО ОПТИМАЛЬНОГО РЕШЕНИЯ LP x1: 4,0 x2: 2,5 x3: 7,0 x4: 0,0

Я ожидаю, что этовместо этого быть никто.

...