Я не знаю ни одного реального кроссплатформенного способа сделать это на Java. Если вас устраивает решение только для Windows, самое простое решение - создать исполняемый файл C # / VBScript, который можно вызвать из вашей программы Java с помощью Runtime.exec()
.
Если вы хотите «более приятное» решение, которое требует немного больше работы (но все еще только для Windows), вы можете использовать iKVM для взаимодействия между вашими C # и Java-программами.
Единственное, о чем я могу подумать с точки зрения кроссплатформенности (и при этом все еще используются нативные библиотеки, - это использовать RXTX для опроса перечисления на COM-портах и проверки, когда что-то изменится. Это не даст вам список все устройства, и это будет работать только для устройств, которые используют COM-порт, но в зависимости от ваших потребностей этого может быть достаточно. Плюсом этого подхода является то, что двоичные файлы RXTX свободно существуют для каждой распространенной платформы.