2013-12-17 4 views
1

код:Когда я запускаю следующий код, он выбрасывает исключение, почему?

public class JniTest { 
    static {  
     System.load("/usr/lib/libJniTest.so"); //It run have no exception and true 
       //System.loadLibrary("libJniTest"); 
    } 
    public native void sayHello(); 

    public static void main(String[] args) { 

    System.out.println(System.getProperties().getProperty("java.library.path")); 
    new JniTest().sayHello(); 
    } 
} 

Если использовать комментарии код вместо "System.load("/usr/lib/libJniTest.so"), он будет бросать исключение:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no libJniTest in java.library.path! 

У меня есть вход

export LD_LIBRARY_PATH=/usr/lib in /etc/profile and set vm arguments: 
-Djava.library.path=/usr/lib 

Помогите мне, пожалуйста!

+0

ли вы пробовали 'System.load (JniTest.class.getClass() getResource (». /usr/lib/libJniTest.so "). toString());'? Как я вижу, * libJniTest.so * находится вне вашего пакета классов. – Azad

+0

Если использовать код комментариев вместо «System.load («/usr/lib/libJniTest.so »), он будет генерировать исключение – xjliao

+0

@Azad Это предложение не имеет смысла. Вы не можете загружать файлы .so из файлов JAR, и вы также не можете загружать их из URL. 'getResource()' возвращает 'URL,' и 'load()' требует аргумента path, а не URL. – EJP

ответ

1

Set VM аргументы с:

-Djava.library.path="${workspace_loc}/project_name:${env_var:PATH}" 

и убедитесь, что .so должен быть в вашей папке проекта

+0

Я hava скопирую libJniTest.so для каталог java.library.path! – xjliao

+0

ok.Что происходит? – rachana

+0

Это исключение для продолжения, я хочу перезагрузить свой компьютер! – xjliao

Смежные вопросы