Требуется некоторая помощь при совместной работе над Java и Cygwin

Я новичок в java, а также в cygwin. У меня нет подробных знаний обоих.

Мне нужна помощь..

Простыми шагами я попытаюсь объяснить свою проблему.

1) Я работаю на крошечной ОС. его ОС с открытым исходным кодом, используемая для беспроводных сенсорных сетей. Он предоставляет java-библиотеки для работы с коммуникациями (от ПК к датчику).

2) Я работаю в среде Windows XP через cigwin.

3) Я разрабатываю приложение. Для этого приложения требуется один Java-интерфейс под названием "Serial Forwarder", который легко доступен в предоставляемых библиотеках. Раньше я запускал этот интерфейс вручную (путем ввода команды **"java net.tinyos.sf.SerialForwarder")**, а затем мое приложение, использующее этот интерфейс. Но теперь я хочу сделать свое приложение независимым. Пользователь должен знать об этих фоновых командах cygwin.

4) Итак, в моем приложении Java я использовал

"Runtime.getRuntime().exec("java net.tinyos.sf.SerialForwarder)" .

5) Это не дает никаких ошибок и не запускает интерфейс.

Правильно ли я иду?
Когда я использую команду выполнения во время выполнения, как я могу убедиться, что эта команда вызывается через интерфейс cigwin?

Также .. если я хочу написать .bat файл .. я могу дать команды, которые будут выполняться .. как я могу убедиться, что эти команды даны через cigwin .. а не через cmd.exe .. Пожалуйста, помогите. меня .


person Hippo    schedule 26.03.2010    source источник


Ответы (2)


Извините, но есть плохие новости... TinyOS с Cygwin действительно отстой. Даже если вы заставите все работать, это будет очень медленно и ненадежно (если только Cygwin или TinyOS не стали лучше с тех пор, как я в последний раз использовал их). Я настоятельно рекомендую вам загрузить UbunTOS+VirtualBox, если вам нужно разрабатывать для TinyOS в Windows.

Тем не менее, я постараюсь вам помочь... надеюсь, вы улучшите свои знания Java, Cygwin и UNIX...

1.) Попался.
2.) Тоже попался.
3.)

Вы можете написать программу на Java, которая использует класс, предоставленный в JAR, чтобы делать все, что вы хотите. Вы можете использовать launch4j или любую другую оболочку, чтобы обернуть вашу программу как исполняемый файл, если хотите. Хотя в этом действительно нет необходимости. Вы также можете создать сценарий оболочки, который вызывает ваш JAR, если хотите.

4.)

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

5.)

Вероятно, он ничего не делает, поскольку вы не указали ему никаких параметров командной строки, а Process, который он возвращает, имеет методы getInputStream() и getOutputStream(), которые позволяют вам взаимодействовать с процессом... процесс не будет записывать в стандартный вывод. .. он будет писать в трубу. Если вы хотите увидеть, что пишет процесс, вам нужно прочитать поток, возвращаемый функцией getInputStream().

6.)

Если вы используете Cygwin, не используйте пакетный файл, вместо этого используйте сценарий оболочки BASH (расширение не требуется, хотя иногда оно появляется с расширением файла «.sh»).

person Michael Aaron Safyan    schedule 26.03.2010

Я могу ошибаться или упрощать, но вы просто пытаетесь запустить программу Java из Java? Почему бы просто не: net.tinyos.sf.SerialForwarder.main(new String[] {"foo", "bar"}); Вы уже работаете с Java, просто вызовите метод main() класса!

person Sean Owen    schedule 26.03.2010
comment
Я попробовал это. String[] args = {-comm,-serial@COM16:telosb}; try{net.tinyos.sf.SerialForwarder sff = new net.tinyos.sf.SerialFrowarder(args); }catch(...){ .. } Я надеялся, что это должно запуститься .. но я получил это сообщение об ошибке .. (на самом деле .. окно sf всплывает на несколько миллисекунд, и все приложение падает с этой ошибкой.) Toscomm JNI библиотека не найдена. Убедитесь, что ваш пакет tinyos-tools установлен, и попробуйте повторно запустить tos-install-jni. Прерывание. - person Hippo; 28.03.2010
comment
Вам нужно будет вызвать System.loadLibrary() с указанием местоположения библиотеки JNI для TinyOS - вот что это вам говорит. - person Sean Owen; 28.03.2010