Tôi đã tích hợp các mô-đun java đơn giản vào môi trường MATLAB trên Windows với một số thành công. Gần đây tôi gặp phải một vấn đề với một thư viện của bên thứ ba mà cố gắng để tải một dll.UnsatisfiedLinkError Khi tải một thư viện từ Java trong MATLAB
Các ClassLoader java ném UnsatisfiedLinkError khi tải được cố gắng:
java.lang.UnsatisfiedLinkError: no <libname> 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)
Các ngoại lệ được báo cáo rằng 'libname' của tôi không nằm trong bất động sản java.library.path. Tôi đã xác minh rằng tài sản thực sự có đường dẫn chính xác trong nó, và rằng các tập tin libname.dll tồn tại trên đường dẫn đó.
Tôi đã xác minh java.library.path theo hai cách. Trước tiên, tôi chỉ đơn giản là kiểm tra rằng giá trị trả về trên dòng lệnh MATLAB:
>> java.lang.System.getProperty('java.library.path')
Sau đó, tôi đổi phương pháp java trong câu hỏi để in giá trị mà chỉ trước khi cuộc gọi vào các chức năng của bên thứ ba không:
System.out.println(System.getProperty('java.library.path'));
Cả hai đều xác nhận rằng giá trị đường dẫn của tôi đã được đặt như mong đợi.
Tôi cũng đã cố tải thủ công thư viện từ dòng lệnh và không thành công với cùng kết quả.
Đây có phải là điều không thể xảy ra trong MATLAB hay không, tôi có thiếu gì đó ở đây không? Thật không may tôi không phải là quản trị viên trên máy này vì vậy tôi không thể thử lừa cũ của việc di chuyển dll vào một thư mục với dlls mà làm việc.
Tôi hoan nghênh mọi đề xuất cho mọi thứ cần thử nếu không có câu trả lời tuyệt đối.
Hệ điều hành: Windows XP MATLAB R2009a Java 1.6
làm thế nào bạn xác minh giá trị của thuộc tính java.library.path? –
@matt b: Tôi đã thêm chi tiết vào bài đăng để trả lời câu hỏi của bạn. –
bạn có thể xem mã thư viện của bên thứ ba đang cố gắng tải (bằng cách xem nguồn) không? nó là cùng một thư viện được báo cáo trong UnsatisfiedLinkError? – bm212