błąd podcas ładowanie biblioteki funkcją System.loadLibrary

0

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.

0

System.loadLibrary(String libname) - Loads the SYSTEM library specified by the libname argument

System.load(String filename) - Loads a code FILE with the specified filename from the local file system as a dynamic library

Zapraszam na http://java.sun.com/javase/6/docs/api/

1 użytkowników online, w tym zalogowanych: 0, gości: 1