Java LoadLibrary UnsatisfiedLinkError, хотя Java может видеть файл и работает на другом компьютере - PullRequest
0 голосов
/ 30 августа 2009

Эта проблема действительно сбивает меня с толку, и, надеюсь, кто-то может мне помочь. Я написал несколько библиотек плагинов для большого программного обеспечения Java. Все отлично работает на моем компьютере разработки. Однако после того, как я скомпилировал и обернул программное обеспечение в установщике Nullsoft и установил на другой компьютер, все, кроме собственных плагинов dll, которые я разработал, работает, и я получаю UnsatisfiedLinkError, когда я вызываю System.loadLibrary. Установщик работает на моем компьютере разработчика, установленное программное обеспечение работает нормально даже после того, как я переместил оригинальное программное обеспечение. Вот что я знаю:

  • нативные библиотеки разработаны в .NET (C ++ / CLI) и подключены JNI

  • Программное обеспечение на новом компьютере загружает правильный путь к библиотеке, может видеть собственные библиотеки DLL. В Java я добавил сегмент для проверки прав доступа к файлам с помощью класса File, Java отлично работает на library_dll.canRead () и library_dll.canWrite (), но зависает / падает на library_dll.canExecute ().

Если кто-нибудь может мне помочь, я бы очень оценил это !!! Спасибо всем!

Ответы [ 3 ]

0 голосов
/ 31 августа 2009

Спасибо, Джон! Нет, на целевом компьютере не установлена ​​.NET (по крайней мере, не больше, чем те, которые установлены по умолчанию в Windows). Но похоже, что JAVA / JNI не может даже загрузить DLL ... Я попробую установить .NET Framework и увидите

.NET / JNI взаимодействие не было трудной частью, которая работает на моем компе разработчика ... Это было сложно, но не слишком сложно.

0 голосов
/ 31 августа 2009

Я бы посоветовал вам запустить FileMon на компьютере, который вызывает проблему, а затем попытаться запустить ваше приложение. После того, как FileMon захватит данные, вы должны увидеть все обращения к файлам, сделанные вашим Java-приложением, и увидеть точную ошибку, которая приводит к ошибке UnsatisfiedLink. Например, может быть, что некоторая зависимость вашей JNI DLL на другом компьютере отсутствует (это звучит как хорошая возможность, после ошибок безопасности / разрешения).

0 голосов
/ 30 августа 2009

Установлен ли на целевом компьютере .NET и установлена ​​ли правильная версия .NET?

Я не могу сказать, что когда-либо делал взаимодействие .NET / JNI - это звучит для меня потенциально сложно. Вы смотрели на использование JNBridge , чтобы сделать вещи проще?

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