Z powodzeniem integruję proste moduły Java w środowisku MATLAB w systemie Windows. Ostatnio napotkałem problem z biblioteką innej firmy, która próbuje załadować bibliotekę dll.UnsatisfiedLinkError Podczas ładowania biblioteki z Java w MATLAB
Java ClassLoader rzuca UnsatisfiedLinkError gdy obciążenie jest próba:
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)
Wyjątkiem donosi, że mój „libname” nie jest w nieruchomości java.library.path. Zweryfikowałem, że właściwość rzeczywiście zawiera poprawną ścieżkę i że plik libname.dll istnieje w tej ścieżce.
Sprawdziłem java.library.path na dwa sposoby. Po pierwsze, ja po prostu sprawdził, że wartość zwracana w wierszu poleceń MATLAB:
>> java.lang.System.getProperty('java.library.path')
Potem zmodyfikowano metodę javy w pytaniu do wydrukowania tej wartości tuż przed wezwanie do uszkodzonej funkcji osób trzecich:
System.out.println(System.getProperty('java.library.path'));
Obie potwierdziły, że moja wartość ścieżki została ustawiona zgodnie z oczekiwaniami.
Próbowałem też ręcznie ładować bibliotekę z wiersza poleceń, ale nie udało się uzyskać tych samych wyników.
Czy jest to coś, co nie jest możliwe w programie MATLAB, czy też coś tu brakuje? Niestety nie jestem administratorem tego komputera, więc nie mogę wypróbować starej sztuczki przeniesienia biblioteki dll do katalogu z bibliotekami DLL, które działają.
Z zadowoleniem przyjmuję wszelkie sugestie dotyczące spraw, które należy wypróbować, jeśli nie ma odpowiedzi absolutnej.
Platforma: Windows XP MATLAB R2009a Java 1.6
jak ty weryfikacji wartość właściwości java.library.path? –
@matt b: Dodałem szczegóły do wpisu w odpowiedzi na twoje pytanie. –
Czy widzisz, jaką bibliotekę próbuje załadować kod strony trzeciej (patrząc na źródło)? czy to ta sama biblioteka, która została zgłoszona w UnsatisfiedLinkError? – bm212