У нас была подобная проблема в прошлом. И найденный хорошим решением:
Мы испытали то использование гуидов, Вы получаете более или менее универсальное подразделение. И это работало как очарование.
Ссылки, которые могли бы помочь генерировать уникальный идентификатор:
Запустите приложение с конвейером , в командной строке, но добавьте аргументы JVM для удаленной отладки, например:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=1044
suspend = y
сообщает JVM не запускать программу, пока не будет подключен отладчик.
Затем перейдите в настройки запуска отладки Eclipse ( Выполнить -> Конфигурации отладки ...
) и создайте «Удаленное приложение Java» для подключения к вашему приложению. Запустите запуск в Eclipse (после установки нескольких точек останова), и вы сможете отлаживать. Не очень удобно, но если вы не можете воспроизвести свои проблемы без канала, это вариант.
Возможно это решение создания именованного канала может применяться здесь.
mkfifo foo
somecommand > foo
Затем в конфигурации отладки добавьте
java -jar myjar.jar
Если я правильно интерпретирую ваш вопрос, я считаю, что вы просто хотите знать, как отправлять ввод по стандарту и отлаживать его в eclipse.
Если это простой ввод, вы можете фактически вручную введите данные System.in через окно консоли eclipse во время работы программы. Просто начните вводить текст в окне консоли и нажмите Enter, чтобы отправить текст в Standard in.
Если это что-то более сложное, я бы предложил абстрагироваться от чтения, которое вы пытаетесь сделать, чтобы взять InputStream. В своей программе вы можете отправить System.in как InputStream. Для отладки вы можете отправить любой другой InputStream. Например, вы можете поместить свой ввод в файл и передать FileInputStream методу для его проверки.
EDIT: Не видя еще кода, я не уверен, но, возможно, вы знаете что-то с обнаружением eof. FileInputStream имеет определенный конец файла, но я предполагаю, что System.in не имеет ничего подобного. Ваш читатель может просто ждать, чтобы прочитать следующий символ, и никогда не продвигаться вперед. Возможно, вам придется вручную остановить чтение после того, как вы узнаете, что прочитали «достаточно».