2012-05-25 23 views
8

Fedora sử dụng ngay bây giờ (gói được cài đặt Package rxtx-2.2-0.5.20100211.fc15.i686 already installed and latest version ).java.lang.UnsatisfiedLinkError: không có rxtxSerial trong java.library.path được ném trong khi tải gnu.io.RXTXCommDriver

Tôi đã sử dụng/thử:

# locate librxtxSerial 
/home/sun/Downloads/rxtx-2.1-7-bins-r2/Linux/i686-unknown-linux-gnu/librxtxSerial.so 
/home/sun/Downloads/rxtx-2.1-7-bins-r2/Linux/ia64-unkown-linux-gnu/librxtxSerial.so 
/home/sun/Downloads/rxtx-2.1-7-bins-r2/Linux/x86_64-unknown-linux-gnu/librxtxSerial.so 
/home/sun/Downloads/rxtx-2.1-7-bins-r2/Mac_OS_X/librxtxSerial.jnilib 
/home/sun/Downloads/rxtx-2.1-7-bins-r2/Solaris/sparc-solaris/sparc32-sun-solaris2.8/librxtxSerial-2.1-7.so 
/home/sun/Downloads/rxtx-2.1-7-bins-r2/Solaris/sparc-solaris/sparc32-sun-solaris2.8/librxtxSerial.so 
/home/sun/Downloads/rxtx-2.1-7-bins-r2/Solaris/sparc-solaris/sparc64-sun-solaris2.8/librxtxSerial-2.1-7.so 
/home/sun/Downloads/rxtx-2.1-7-bins-r2/Solaris/sparc-solaris/sparc64-sun-solaris2.8/librxtxSerial.so 
/usr/lib/rxtx/librxtxSerial-2.2pre1.so 
/usr/lib/rxtx/librxtxSerial.so 

Sau đó, sử dụng:

-Djava.library.path=/usr/lib/rxtx/librxtxSerial.so -Djava.library.path=/usr/lib/jni 

Nhưng tôi vẫn nhận được luôn này như sau:

java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while loading gnu.io.RXTXCommDriver 
Exception in thread "main" java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path 
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1681) 
    at java.lang.Runtime.loadLibrary0(Runtime.java:840) 
    at java.lang.System.loadLibrary(System.java:1047) 
    at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:83) 
    at main.Tty.sendCommand1(Tty.java:212) 
    at main.Tty.main(Tty.java:236) 

Làm thế nào để giải quyết này?

Theo dõi:

SAI:

-Djava.library.path=/usr/lib/rxtx -Djava.library.path=/usr/lib/jni

ĐÚNG

-Djava.library.path=/usr/lib/jni -Djava.library.path=/usr/lib/rxtx

+0

vẻ như bạn có một số thư viện đang thiếu. – user1335794

+0

Vui lòng đăng mã java bạn đang sử dụng để tải thư viện. – Santosh

Trả lời

7

Tôi đoán vấn đề là bạn có nhiều -Djava.library.path thông số và là một trong những thứ hai ghi đè giá trị của người đầu tiên. Giá trị cũng phải là đường dẫn đến thư mục chứa thư viện, không bao gồm tên thư viện.

Trên hệ thống Linux, bạn sẽ có thể kết hợp cả hai thông số con đường sử dụng dấu hai chấm như tách:

-Djava.library.path=/usr/lib/rxtx:/usr/lib/jni 
+0

Cảm ơn bạn. Đó là truy vấn của tôi, nó hoạt động. – YumYumYum

1

Chúng tôi đã có cùng một vấn đề trên Linux. Chìa khóa để chúng tôi sửa chữa nó là

  1. Sử dụng dấu hai chấm ":" để tách các yếu tố java.library.path
  2. Sử dụng dấu gạch chéo để phân cách thư mục

Trong trường hợp của chúng tôi, chúng tôi sử dụng một người họ hàng đường dẫn như thế này

-Djava.library.path=jar/linux64:jars 

Đường dẫn này tương ứng với đường dẫn khởi động. Ví dụ. khi chạy từ netbeans thư mục khởi động là thư mục dự án.

3

Đã xảy ra sự cố tương tự với thư viện v4l4j được cài đặt từ kho. Trong dự án netbeans ununtu không khởi động được từ IDE, nhưng làm việc tốt như jar.

Được giải quyết bằng cách đặt * .so tệp vào /usr/lib không phải là /usr/lib/jni thư mục.

+0

Câu trả lời hay nhất! Phương pháp này hoạt động cho pidora os cũng: thumbsup – noelyahan

+1

Điều này làm việc cho tôi trong Raspbian là tốt! Lần đầu tiên tôi cài đặt trình điều khiển RXTX bằng cách sử dụng 'sudo apt-get install librxtx-java' và sau đó sao chép tất cả các tệp/usr/lib và nó đã hoạt động! –

1

Dự án -> thuộc tính -> Đường dẫn xây dựng Java -> Tìm tệp .jar của bạn. Nhấp vào + để mở thuộc tính của JAR. Chọn vị trí thư viện gốc và chỉnh sửa nó để trỏ đến thư viện được chia sẻ của RXTX (.DLL, .so, .dylib).

0
Copy RXTXcomm.jar ---> <JAVA_HOME>\jre\lib\ext 

Copy rxtxSerial.dll ---> <JAVA_HOME>\jre\bin

Copy rxtxParallel.dll ---> <JAVA_HOME>\jre\bin

Các vấn đề liên quan