2014-11-04 3 views
1

문제점에 대한 해결책을 찾고 있습니다.
rxtx jar를 사용하여 직렬 포트에서 읽어야하는 번들을 개발 중입니다. 나는 응용 프로그램을 실행하면
, 나는 다음과 같은 오류가 나는 경로를 구축하고 JVM에서 설정 할 수있는 단지를 추가 한OSGi Equinox에서 rxtx를 설정하는 방법은 무엇입니까?

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) 

를 얻을.

도와주세요!

답변

1

OSGi는 멀티 플랫폼이며 번들을 표시하고 사라지게해야하기 때문에 기본 라이브러리 처리 (rxtx의 경우)는 번들에 명시 적으로 지정해야합니다. 이는 rxtx jar 파일을 포함하는 번들의 헤더 인 Bundle-NativeCode을 사용하여 수행됩니다. 로드 할 네이티브 라이브러리는 OS 및 아키텍처별로 표시 할 수 있습니다.

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

위의 예는 리눅스가 x86-64에 대한 라이브러리 lib/Windows/i368-mingw32/rxtxSerial.dll에 (모든 아키텍처) lib/Linux/x86_64-unknown-linux-gnu/librxtxSerial.so 및 Windows 찾을 수 있음을 나타냅니다 :처럼이 경우에는 보일 수 있습니다. 경로는 번들에서 상대적이므로 번들에 공유 라이브러리를 포함하는 것을 잊지 마십시오.

자세한 내용은 OSGi core 사양을 참조하십시오.