Как отладить проблему при загрузке нативных библиотек в Java? - PullRequest
2 голосов
/ 18 февраля 2010

У меня проблема относительно JNI и Java. Вот в чем дело: клиент хочет, чтобы мы установили определенное приложение в его системе. Это приложение использует нативные библиотеки, но клиент не хочет помещать эти библиотеки в свою системную папку по причинам, которые я не знаю или не понимаю, но не могу изменить.

Чтобы обойти эту проблему, я попытался запустить JVM с -Djava.library.path, поместив в него нужные библиотеки. Но дело в том, что у меня есть UnsatisfiedLinkError, когда я пытаюсь запустить свой проект. Из того, что я вижу, проблема не в том, что основная dll называется (поскольку файл, очевидно, существует, я видел его при отладке), я думаю, что это должны быть некоторые библиотеки, связанные с этой первой dll, которые проблематичны, но я не знаю, как найти то, что DLL отсутствует.

Есть идеи, как решить эту проблему?

Ответы [ 2 ]

3 голосов
/ 18 февраля 2010

Мой первый порт захода (даже для отладки JNI) всегда Dependency Walker . Если ничего другого, он сообщит вам все остальные DLL, от которых зависит ваша DLL.

ldd - эквивалент для Linux.

0 голосов
/ 18 февраля 2010

Я думаю, что этот параметр предназначен для указания каталогов, а не файлов. Так что, если ваш dll c:\mylibs\lib1.dll, вы должны установить его значение c:\mylibs.

Я не знаю, допускает ли это несколько путей. Позвольте мне проверить.

Редактировать

Этот параметр допускает несколько путей.

См. Раздел 2.7 в http://java.sun.com/docs/books/jni/html/start.html

Он не определяет формат, но я думаю, вы можете использовать тот же разделитель, что и в classpath. Там также написано, что вы можете использовать системную переменную PATH.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...