Java+Eclipse: то, как Вы отлаживаете программу Java, которая получает, передало stdin по каналу/перенаправило?

У нас была подобная проблема в прошлом. И найденный хорошим решением:

  • Дают каждому изображению уникальный гуид.
  • Создают запись базы данных для каждого изображения, содержащего имя, местоположение, гуид и возможное местоположение изображений sub (миниатюры, reducedsize, и т.д.).
  • Использование первое (один или два) символы гуида для определения папки верхнего уровня.
  • , Если папки имеют слишком много файлы, разделите снова. Обновите ссылки, и Вы готовы пойти.
  • , Если количество файлов и доступов слишком высоко, можно распространить папки по различным файловым серверам.

Мы испытали то использование гуидов, Вы получаете более или менее универсальное подразделение. И это работало как очарование.

Ссылки, которые могли бы помочь генерировать уникальный идентификатор:

6
задан Jason S 17 October 2009 в 00:00
поделиться

3 ответа

Запустите приложение с конвейером , в командной строке, но добавьте аргументы JVM для удаленной отладки, например:

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=1044

suspend = y сообщает JVM не запускать программу, пока не будет подключен отладчик.

Затем перейдите в настройки запуска отладки Eclipse ( Выполнить -> Конфигурации отладки ... ) и создайте «Удаленное приложение Java» для подключения к вашему приложению. Запустите запуск в Eclipse (после установки нескольких точек останова), и вы сможете отлаживать. Не очень удобно, но если вы не можете воспроизвести свои проблемы без канала, это вариант.

11
ответ дан 8 December 2019 в 16:05
поделиться

Возможно это решение создания именованного канала может применяться здесь.

mkfifo foo
somecommand > foo

Затем в конфигурации отладки добавьте в аргументах, так что ваша программа отлаживается как:

java -jar myjar.jar

0
ответ дан 8 December 2019 в 16:05
поделиться

Если я правильно интерпретирую ваш вопрос, я считаю, что вы просто хотите знать, как отправлять ввод по стандарту и отлаживать его в eclipse.

Если это простой ввод, вы можете фактически вручную введите данные System.in через окно консоли eclipse во время работы программы. Просто начните вводить текст в окне консоли и нажмите Enter, чтобы отправить текст в Standard in.

Если это что-то более сложное, я бы предложил абстрагироваться от чтения, которое вы пытаетесь сделать, чтобы взять InputStream. В своей программе вы можете отправить System.in как InputStream. Для отладки вы можете отправить любой другой InputStream. Например, вы можете поместить свой ввод в файл и передать FileInputStream методу для его проверки.

EDIT: Не видя еще кода, я не уверен, но, возможно, вы знаете что-то с обнаружением eof. FileInputStream имеет определенный конец файла, но я предполагаю, что System.in не имеет ничего подобного. Ваш читатель может просто ждать, чтобы прочитать следующий символ, и никогда не продвигаться вперед. Возможно, вам придется вручную остановить чтение после того, как вы узнаете, что прочитали «достаточно».

4
ответ дан 8 December 2019 в 16:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: