Как настроить Matlab MCR для Ubuntu и Netbeans (UnsatisfiedLinkedError)
Я развертываю проект Java EE на сервере, который использует MCR Matlab для некоторых функций обработки изображений. Я пытался это месяцами, я не могу заставить это работать. Проблема в том, что когда он собирается использовать MCR, он не может найти библиотеки.so. Я получил эту ошибку:
javax.servlet.ServletException: не удалось найти библиотеку libmwmclmcrrt.so.7.13, требуемую для компоновщика MATLAB JA, на java.library.path. Эта библиотека обычно устанавливается вместе с MATLAB или MCR, ее отсутствие может указывать на проблему с этой установкой или на текущую конфигурацию пути. Версия MCR, которую пытается использовать этот компонент, - 7.13.
ПЕРВОПРИЧИНА:
java.lang.UnsatisfiedLinkError: Не удалось найти библиотеку libmwmclmcrrt.so.7.13, необходимую для MATLAB Builder JA, в java.library.path. Эта библиотека обычно устанавливается вместе с MATLAB или MCR, ее отсутствие может указывать на проблему с этой установкой или текущей конфигурацией пути. Версия MCR, которую пытается использовать этот компонент: 7.13.
Сервер использует:
- Ubutuntu 64 бит.
- NetBeans 7,4
- Стеклянная рыба
- Java 6 SDK
- сначала он использует MCR 7.13, теперь он использует MCR 8.1
Вещи, которые я уже пробовал:
- Установка переменных среды LD_LIBRARY_PATH и XAPPLERSDIR с экспортом:
export LD_LIBRARY_PATH = / usr / local /MATLAB/MATLAB_Compiler_Runtime/ v81/ runtime / glnxa64:/ usr / local /MATLAB/MATLAB_Compiler_Runtime/ v81/ bin / glnxa64:/ usr / local / MATLAB / MATLAB_64_sync: v1 / / USR / местные /MATLAB/MATLAB_Compiler_Runtime/ V81/ SYS / Java / JRE /glnxa64/ JRE / Библиотека /amd64/native_threads:/ USR / местные /MATLAB/MATLAB_Compiler_Runtime/ V81/ SYS / Java / JRE /glnxa64/ JRE / Библиотека / amd64 / сервер:/ USR / местные /MATLAB/MATLAB_Compiler_Runtime/ V81/ SYS / Java / JRE /glnxa64/ JRE / Библиотека / amd64: $ LD_LIBRARY_PATH
export XAPPLRESDIR = / usr / local /MATLAB/MATLAB_Compiler_Runtime/ v81/ X11 / app-defaults
- Установка переменных среды LD_LIBRARY_PATH и XAPPLERSDIR с помощью setenv:
Команда setenv не найдена
- Отредактируйте файл ld.so.conf и запустите ldconfig
- Добавьте -Djava.library.path=my/path/to/so в glassfish
- Добавьте -Djava.library.path=my/path/to/so в Netbeans, как здесь сказано: указание "java.library.path" в netbeans для файлов.dll /.so
- Я попытался установить переменные среды в Netbeans, как сказано в этом посте: Как установить переменную среды в Netbeans? Но я не могу найти "Действия"
- Я попытался установить переменные среды в Netbeans, как сказано в этом посте: https://askubuntu.com/questions/267071/ld-library-path-specification Но я не могу найти "Среда"
Я перепробовал много других вещей, которые я не могу вспомнить, и ни одна из них не работает, он продолжает показывать ту же ошибку (теперь для версии 8.1 вместо 7.13). Пожалуйста, я буду признателен за любую помощь.
1 ответ
У меня была такая же проблема при работе с Linux, Java EE и Matlab. Мое решение было:
- Откройте терминал
- Войти как root
$ su
и введите пароль - Отредактируйте / etc / enviroment
$ gedit /etc/enviroment
- Добавьте необходимые переменные, в нашем случае:
LD_LIBRARY_PATH = "/ USR / местные /MATLAB/MATLAB_Compiler_Runtime/ V81/ выполнения /glnxa64:/ USR / местные /MATLAB/MATLAB_Compiler_Runtime/ V81/ бен /glnxa64:/ USR / местные /MATLAB/MATLAB_Compiler_Runtime/ V81/ SYS / OS /glnxa64:/ USR / местные /MATLAB/MATLAB_Compiler_Runtime/ V81/ SYS / Java / JRE /glnxa64/ JRE / Библиотека /amd64/native_threads:/ USR / местные /MATLAB/MATLAB_Compiler_Runtime/ V81/ SYS / Java / JRE /glnxa64/ JRE / Библиотека / amd64 / сервер: / USR / местные /MATLAB/MATLAB_Compiler_Runtime/ V81/ SYS / Java / JRE /glnxa64/ JRE / Библиотека / amd64"
XAPPLRESDIR = "/ USR / местные /MATLAB/MATLAB_Compiler_Runtime/ V81/X11/ приложение-умолчанию"
- Сохраните файл и перезагрузитесь.
- Запустите сервер от имени пользователя root.
Что произошло с вашими другими решениями, такими как экспорт, было то, что не было никакой видимости между переменными, которые вы создали, и сервером GlassFish. Установка переменных в среде гарантирует, что они видны из любой другой программы / процесса.