2013-06-20 1 views
1

Недавно я пытался создать графический интерфейс Swing для отправки и получения команд из командной строки третьей стороны program. Я использовал ту же процедуру, которая использовалась и работала для командной строки, т. Е. ProcessBuilder для выполнения, а затем использовала BufferedReader для чтения ответов от программы. Я могу, конечно, упомянуть об этом еще раз, что я мог бы хоть немного откликнуться от командной строки Windows (иногда мне нужно было использовать сканер вместо). Когда я использовал тот же по программе this командной строки,Как взаимодействует с приглашением сторонней командной строки, отличной от командной строки Windows?

  1. Он не показывался

  2. Он не ответил на ни BufferedReader или сканера.

    Я искал в Интернете и обнаружил монотонный ответ от него, что выполнение одной и той же процедуры на них - это не одно и то же, потому что это не одно и то же. Я до сих пор не смог завершить свой проект, но я могу немного спать, если узнаю, в чем разница между ними, их исполнением, не то же самое, есть ли способ, которым мы можем на самом деле собрать их вместе и что моя проблема может быть решена?

+2

Не вопрос до сих пор: «почему программа не использует стандартный ввод или стандартный вывод» на самом деле не очень полезно/ответственно. Есть также много причин, по которым программа не запускается ... Первое, что нужно попробовать - это подключить ввод/вывод к/из этой программы в командной строке, чтобы убедиться, что она действительно читает ввод ... –

+0

@AlexeiLevenkov sir, I don «У меня есть репутация, чтобы проголосовать за ваш комментарий, но спасибо, и я сам почувствовал необходимость переформулировать вопрос. –

+0

@SukhmeetSingh На первый взгляд я бы сказал, что программа, скорее всего, открывает свою собственную оболочку, тыс. «Оригинальная» оболочка остается безмолвной и не реагирующей. Пожалуйста, опишите поведение программы при ее выполнении вручную из вашей оболочки. –

ответ

1

Скорее всего, программа запускает собственную оболочку и больше не взаимодействует с оригинальной. (Вы заметили бы это, если программа откроет новое окно)

Или программа нуждается в некоторой конкретной библиотеке, чтобы присутствовать, чтобы иметь возможность взаимодействовать с оболочкой (, похоже, здесь), а это нет в вашей среды Java.

В качестве быстрого взлома можно попытаться запустить bash (или cmd), который затем запускает инструмент. bash и cmd есть readline библиотека. У меня нет окон, готовых сюда, но, как предполагают, просто попробуйте назвать свою программу, например cmd urjtag.exe, а не просто urjtag.exe тем способом, которым вы начинаете процесс cmd (с которым вы можете взаимодействовать), и что cmd запускает urjtag.exe, где вы уже знаете, что он может взаимодействовать.

В любом случае проблема заключается в том, как программа, которую вы хотите вызвать, взаимодействует с оболочкой, и вы должны спросить авторов программы, как она работает и как вы можете подключиться к ней.

+0

сэр, я думаю, что вы правы, потому что, когда я выполняю exe, он будет принимать приглашение, хотя и не в другом окне, но да, похоже, что он начал свою собственную процедуру, а затем, но, конечно, никаких оконных команд вроде dir/p будет работать. Я буду рад заглянуть в «bash» и посмотреть, поможет ли он. Снова моя репутация не позволяет мне проголосовать за ваш ответ. (PS: ссылка на readline не имеет страницы sir) –

+0

@SukhmeetSingh Я исправил ссылку. bash - это инструмент linux/unix. Я не уверен, что он существует или доступен в Windows. –

+0

@SukhmeetSingh Я добавил информацию о 'cmd' вместо' bash'. Взгляни. –

0

Из документации UrJTAG:

JTAG (IEEE 1149.1) представляет собой последовательный интерфейс для тестирования устройств с интегральных схем.

и

UrJTAG представляет собой программный пакет, который позволяет работать с JTAG-Aware (IEEE 1149.1) аппаратных устройств (частей) и доски через JTAG адаптер.

  1. Это не командная строка.
  2. Он не предназначен для использования в качестве командной строки для общих программ.

Итак, как уже сообщали другие монотонные ответы, это и командная строка Windows - это не одно и то же, хотя вы, кажется, думаете, что это так. Он имеет очень специфический прецедент, как описано в документации.

Командная строка Windows представляет собой специальную программу, которая вызывает конкретные исполняемые файлы и передает им аргументы командной строки определенным образом.

Исполняющий файл java.exe предназначенный для понимания такого типа вызова.

Поскольку исполняемый файл UrJTAG не является общей командной строкой, он не выполняет то, что делает командная строка Windows, и поэтому не будет работать для запуска программ Java, как вы хотите.

+0

Насколько я понял OP, он хочет запустить интерфейс командной строки конкретной библиотеки JTAG. Начало происходит из java, и он хочет взаимодействовать с этим CLI через std-in и std-out. Это ожидаемый и поддерживаемый прецедент. (а не JTAG вообще, но в этой библиотеке) –

+0

Разумное предположение. Я подожду, пока OP не предоставит некоторую ясность и не удалит мой ответ, если то, что вы говорите, подтверждено. –

+0

@RajeshJAdvani sir Я уже переставал думать о чем-либо в любом случае и стал беспристрастным, если это помогает. Я никогда не говорил, что это командная строка сэр, это, хотя, несомненно, программа командной строки. Я согласен с тем, что java.exe должен был быть разработан для взаимодействия с cmd, но то, что меня поражает, это то, что когда программное обеспечение принимает приглашение из командной строки Windows в том же окне, почему мы не можем читать это? –

Смежные вопросы