добавить javax.comm API на Mac

#java #macos #javax.comm

#ява #macos #javax.comm #java

Вопрос:

Я хотел бы создать Java-приложение, которое взаимодействует с последовательным устройством (ручной сканер), чтобы приложение не зависело от платформы. Я нашел несколько примеров кода, и когда я копирую их в Eclipse, он говорит, что javax.comm.* отсутствует. Как мне установить это на свой Mac? И как мне добавить эту библиотеку в мое приложение, чтобы пользователям не нужно было ничего устанавливать?

Я хочу иметь возможность предоставлять пользователям файл jar и устройство, и они должны иметь возможность запускать его в Windows / Mac / Linux без небольшой настройки или вообще без нее.

Я нашел загрузку, где я мог бы загрузить javax.comm.jar файл, но загрузка включала win32comm.dll это зависело от некоторых способов — по крайней мере, это была ошибка, которую я получил, когда добавил файл jar в свой проект.

 Error loading win32com: java.lang.UnsatisfiedLinkError: no win32com in java.library.path
  

Ответ №1:

Это Java Communications API. Вы можете получить его здесь, но это вам не поможет. Поддерживаемые платформы — Solaris SPARC, Solaris x86 и Linux x86.

Для Mac и Linux, если последовательный порт уже настроен, вы можете открыть /dev/ttyS0, /dev/ttyS1, /dev /ttyS2 и т.д. в виде файла и прочитать / записать в него. В Windows, если последовательный порт уже настроен, вы можете открыть «COM1», «COM2» и т.д. и читать и записывать в него.

К сожалению, javax.comm (как указано в эталонной реализации) не является кроссплатформенным, поэтому вам придется либо прибегнуть к объединению дополнительных собственных библиотек и поддерживающих классов, либо использовать зависящий от платформы способ настройки последовательного порта. В Windows это может быть команда «mode», а в Mac / Linux это может быть команда stty.

Комментарии:

1. Таким образом, на самом деле нет независимого от платформы способа связи с serialport???

2. Я этого не говорил. Просто ссылочная реализация javax.comm / Java Communications API не зависит от платформы. В API J2SE не существует независимого от платформы способа связи с последовательным портом.

Ответ №2:

Я бы рекомендовал RXTX. Он не использует javax.comm пакет, но следует тому же API (с некоторыми полезными дополнениями).

E1: Как оказалось, RXTX 2.0 действительно использует javax.comm пакет. Вы можете найти его на той же странице загрузки.