Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Особенности работы java под Linux, в свете: System.loadLibrary("lib") 
:(
    Опции темы
Andrey1
  Дата 27.1.2006, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 621
Регистрация: 27.2.2004
Где: Moscow

Репутация: 1
Всего: 5



Есть класс в котором вызывается
Код

System.loadLibrary("lib")
, где lib - nativ(e)ная библиотека.
Под windows класс запускается без вопросов (и библиотеку, скомпилированную gcc, звать 'lib.dll').

Под linux тот же класс не работает, ругается:
Код

Exception in thread "main" java.lang.UnsatisfiedLinkError: no lib in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1682)
        at java.lang.Runtime.loadLibrary0(Runtime.java:822)
        at java.lang.System.loadLibrary(System.java:992)
        at RPtest.<clinit>(RPtest.java:87)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at net.sf.saxon.functions.ExtensionFunctionCall.invokeMethod(ExtensionFunctionCall.java:505)
        at net.sf.saxon.functions.ExtensionFunctionCall.call(ExtensionFunctionCall.java:218)
        at net.sf.saxon.functions.ExtensionFunctionCall.iterate(ExtensionFunctionCall.java:110)
        at net.sf.saxon.expr.CardinalityChecker.iterate(CardinalityChecker.java:137)
        at net.sf.saxon.expr.ExpressionTool.eagerEvaluate(ExpressionTool.java:278)
        at net.sf.saxon.expr.ExpressionTool.lazyEvaluate(ExpressionTool.java:244)
        at net.sf.saxon.expr.LetExpression.eval(LetExpression.java:163)
        at net.sf.saxon.expr.LetExpression.iterate(LetExpression.java:146)
        at net.sf.saxon.expr.IfExpression.iterate(IfExpression.java:225)
        at net.sf.saxon.expr.IfExpression.iterate(IfExpression.java:227)
        at net.sf.saxon.expr.LetExpression.iterate(LetExpression.java:154)
        at net.sf.saxon.expr.ForExpression$MappingAction.map(ForExpression.java:603)
        at net.sf.saxon.expr.MappingIterator.next(MappingIterator.java:61)
        at net.sf.saxon.expr.MappingIterator.next(MappingIterator.java:76)
        at net.sf.saxon.expr.ComputedExpression.process(ComputedExpression.java:567)
        at net.sf.saxon.expr.IfExpression.process(IfExpression.java:238)
        at net.sf.saxon.expr.IfExpression.process(IfExpression.java:240)
        at net.sf.saxon.expr.IfExpression.process(IfExpression.java:240)
        at net.sf.saxon.expr.LetExpression.process(LetExpression.java:202)
        at net.sf.saxon.expr.ForExpression.process(ForExpression.java:535)
        at net.sf.saxon.instruct.ElementCreator.processLeavingTail(ElementCreator.java:162)
        at net.sf.saxon.instruct.Instruction.process(Instruction.java:90)
        at net.sf.saxon.expr.ForExpression.process(ForExpression.java:535)
        at net.sf.saxon.instruct.ElementCreator.processLeavingTail(ElementCreator.java:162)
        at net.sf.saxon.instruct.Instruction.process(Instruction.java:90)
        at net.sf.saxon.query.XQueryExpression.run(XQueryExpression.java:311)
        at net.sf.saxon.Query.doMain(Query.java:418)
        at net.sf.saxon.Query.main(Query.java:76)

(1) не в зависимости от того, как звать библиотеку (скомпилированную gcc) 'lib', 'lib.so', "lib.o";
(2) не в зависимости от того указывать, или не указывать, java: -Djava.library.path=. при запуске, относит. путь указывать или абсолют.

Вопрос - почему и что делать?

Это сообщение отредактировал(а) Andrey1 - 27.1.2006, 17:25


--------------------
Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания.
из сутры помоста шестого патриарха Хуэйнена
PM MAIL WWW ICQ   Вверх
powerOn
Дата 27.1.2006, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



может прав не хватает? Ты как root запускаешь?


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
Andrey1
Дата 27.1.2006, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 621
Регистрация: 27.2.2004
Где: Moscow

Репутация: 1
Всего: 5



Цитата(MoonCat @ 27.1.2006, 17:38 Найти цитируемый пост)

может прав не хватает? Ты как root запускаешь?

Да, под рутом. У либы все права на чтение, запуск.



--------------------
Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания.
из сутры помоста шестого патриарха Хуэйнена
PM MAIL WWW ICQ   Вверх
Andrey1
Дата 27.1.2006, 18:40 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 621
Регистрация: 27.2.2004
Где: Moscow

Репутация: 1
Всего: 5



Каких чудес только не бывает на свете...
Оказывается, либу звать нужно librp.so, а вызывать
Код

System.loadLibrary("rp")

См. http://www.netspade.com/articles/2005/10/2...tive-interface/
Есть еще энсинуации с LD_LIBRARY_PATH... типа export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH ...


--------------------
Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания.
из сутры помоста шестого патриарха Хуэйнена
PM MAIL WWW ICQ   Вверх
AntonSaburov
Дата 27.1.2006, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Читаем FAQ - http://vingrad.ru/JAVA-JAVA-001971
"Видно, что результатом компиляции должна быть JniTest.dll. Кстати, для Unix-систем должен быть файл вида libJniTest.so. Вот такая особенность. Нужен префикс lib."
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0769 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.