Próbuje załadować bibliotekę na Linxie za pomocą funkcji loadLibrary i coś mi nie idzie. Biblioteka jest w katalogu który jest w ścieżce LD_LIBRARY_PATH i wywala błąd UsatisfiedLinkError. Próbowałem też podawać ścieżke z bibliotekami z linii komend z przełącznikiem -Djava.library.path=. i nic. Napisałem też program którego zródło zamieszczam poniżej który pokazuje że biblioteka jest faktycznie tam.
import java.lang.*;
import java.io.File;
class Start{
private native void print();
private static String file= "libstart";
public static void main(String[] args) {
try{
Runtime.getRuntime().loadLibrary(file);
}catch(UnsatisfiedLinkError err){
String paths= System.getProperty("java.library.path");
System.out.print("W katalogu :\n" + paths + "\n nie znaleziono pliku " + file + ".so");
String[] tab= paths.split(":");
for(int i=0; i<tab.length; i++){
File f= new File(tab[i]+ file + ".so");
if(f.exists())
System.out.print("\nPlik znajduje się w katalogu: " + f.getPath()+ "\n");
}
}
}
}
Po uruchomieniu program wypluwa:
$ java -Djava.library.path=/home/xxxx/Pulpit/ -classpath . Start
W katalogu :
/home/xxxx/Pulpit/
nie znaleziono pliku libstart.so
Plik znajduje się w katalogu: /home/xxxx/Pulpit/libstart.so
A to potwierdza, że biblioteka tam już jest.
Ktoś ma jakiś pomysł? co może być nie tak? Bo mi już ręce opadają.
ps. dodam tylko że używając funkcji 'load' z bezwzględną ścieżką biblioteka ładuje się bez błędu.