UnsatisfiedLinkError при загрузке библиотеки из Java в MATLAB

Хотя этому уже ответили, что я думаю, что это была бы хорошая идея объяснить , почему это должно ожидаться.

дополнительная схема А обычно применяется, потому что большинство криптографических фильтров не семантически безопасно и предотвратить некоторые формы cryptoatacks. Например, обычно в RSA дополнительная схема OAEP используется, который предотвращает некоторые виды нападений (такие как выбранное нападение простого текста или ослепление ).

дополнительная схема А добавляет немного (обычно) случайного мусора к сообщению m, прежде чем сообщение будет отправлено. В методе OAEP, например, два Оракула используются (это - упрощенное объяснение):

  1. , Учитывая размер модуля Вы биты padd k1 с 0 и k0 биты со случайным числом.
  2. Тогда путем применения некоторого преобразования к сообщению Вы получаете заполненное сообщение, которое шифруется и отправляется.

, Который предоставляет Вам рандомизацию для сообщений и со способом протестировать, если сообщение является мусором или нет. Поскольку дополнительная схема обратима при дешифровании сообщения, тогда как Вы ничего не можете сказать о целостности самого сообщения, можно, на самом деле, сделать некоторое утверждение о дополнении, и таким образом можно знать, было ли сообщение правильно дешифровано, или Вы делаете что-то не так (т.е. кто-то вмешался в сообщение, или Вы используете неправильный ключ)

5
задан Adam Holmberg 20 November 2009 в 19:07
поделиться

3 ответа

Только что нашел это в документации MATLAB:

Определение пути поиска для библиотек DLL Native Method Sun Java

Механизм, который MATLAB использует для поиска библиотек собственных методов, требуемых Java, имеет изменилось. MATLAB больше не использует системные переменные среды для определения путей к этим библиотекам.

Соображения совместимости

Если вы в настоящее время полагаетесь на переменные среды PATH (для Windows) или LD_LIBRARY_PATH (для UNIX) для этой цели, вам потребуется используйте вместо него файл librarypath.txt, как описано ниже.

Указание пути к библиотеке Java

Классы Java могут динамически загружать собственные методы с помощью метода Java java.lang.System.loadLibrary ("LibFile"). Чтобы программное обеспечение JVM могло найти указанный файл библиотеки, каталог, содержащий его, должен находиться на пути к библиотеке Java. Этот путь устанавливается, когда MATLAB запускает программное обеспечение JVM при запуске, и основан на содержимом файла

$ matlab / toolbox / local / librarypath.txt

(где $ matlab - корневой каталог MATLAB, представленный MATLAB keyword matlabroot).

Вы можете расширить путь поиска для собственных библиотек методов, отредактировав файл librarypath.txt. Следуйте этим рекомендациям при редактировании этого файла:

  • Указывайте каждый новый каталог в отдельной строке.
  • Указывайте только имена каталогов, а не имена файлов DLL. Вызов LoadLibrary делает это за вас.
  • Чтобы упростить спецификацию каталогов в кросс-платформенных средах, вы можете использовать любой из этих макросов: $ matlabroot, $ arch и $ jre_home.
5
ответ дан 13 December 2019 в 22:10
поделиться

Вы знакомы с Process Monitor ? (Если нет, вы легко поймете, как это работает.)

Загрузите его. Запустить его. Просто включите «Показать активность файловой системы» (маленькие значки справа под панелью меню), отключите остальные.

Затем запустите все, что заставляет библиотеку пытаться загрузить dll. После возникновения UnsatisfiedLinkError остановите сбор событий в Process Monitor.

Теперь нажмите CTRL + F и найдите имя библиотеки, которую она должна загрузить. Отметьте (возможно, несколько) запись, в которой написано «Не найдено» или «Имя не найдено» в столбце результатов и с именем dll в столбце пути.

Теперь проверьте, где действительно выполняется поиск dll. Возможно, он добавляет какой-то дополнительный путь или что-то подобное и поэтому не может его найти.

4
ответ дан 13 December 2019 в 22:10
поделиться

Ваша библиотека зависит от других dll? Может случиться так, что DLL-библиотека java загружается в результате ее вызова loadLibrary (), требующей других DLL. Я полагаю, что в Windows он будет искать эти библиотеки по% PATH%.

Это не совсем Java; это больше связано с собственной библиотекой, которую вы загружаете. Java сообщает, где найти dll через java.library.path (или любой другой механизм, который использует Matlab), и libname.dll будет использовать% PATH% для поиска любых dll, от которых он зависит.

Как вы говорите, отсутствующий dll находится в вашем java.library.path, возможно, вы могли бы попробовать добавить значение java.library.path к% PATH% и повторить попытку?

0
ответ дан 13 December 2019 в 22:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: