2014-11-04 2 views
1

Я ищу решение моей проблемы.
Я разрабатываю пакет, который должен считывать из последовательного порта с помощью rxtx jar.
При запуске приложения, я получаю следующее сообщение об ошибкеКак установить rxtx с OSGi Equinox?

java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while loading gnu.io.RXTXCommDriver 
Exception in thread "Thread-2" java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path 
    at java.lang.ClassLoader.loadLibrary(Unknown Source) 
    at java.lang.Runtime.loadLibrary0(Unknown Source) 
    at java.lang.System.loadLibrary(Unknown Source) 
    at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:123) 
    at ez430.Port.<init>(Port.java:29) 

Я добавил банку построить путь и установить его в Jvm.

Пожалуйста, помогите мне!

ответ

1

Поскольку OSGi является многоплатформенным и требует ухода за появляющимися и исчезающими связями, обработка явных библиотек (как это делает rxtx) должна быть явно указана для пакета. Это делается с использованием заголовка Bundle-NativeCode в комплекте, который включает в себя файл jar rxtx. Загружаемую загрузочную библиотеку можно указать для каждой архитектуры и архитектуры. В этом случае может выглядеть следующим образом:

Bundle-NativeCode: lib/Linux/x86_64-unknown-linux-gnu/librxtxSerial.so; 
    osname="Linux";processor="x86-64", 
    lib/Windows/i368-mingw32/rxtxSerial.dll; 
    osname="Windows" 

Приведенный выше пример показывает, что для Linux x86-64 библиотеки можно найти в lib/Linux/x86_64-unknown-linux-gnu/librxtxSerial.so и для Windows (все архитектуры) в lib/Windows/i368-mingw32/rxtxSerial.dll. Пути являются относительными в комплекте, поэтому не забудьте включить разделяемые библиотеки в ваш комплект.

Для получения дополнительной информации см. Спецификацию OSGi core.