CentOS7安装matlab环境Java调用异常,如何解决?

CentOS7安装matlab环境Java调用异常

需要在Linux上通过Java程序调用matlab打包的jar包
安装了 matlab2021a 的运行环境
#问题

java: symbol lookup error: /usr/local/MATLAB/MATLAB_Runtime/v910/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6: undefined symbol: __cxa_thread_atexit_impl

调用方法就报错,服务也挂了
有人解决过吗?

该回答引用ChatGPT
可以尝试通过以下步骤解决该问题:

1、确认您的系统中的 libstdc++.so.6 版本是否与 MATLAB 所依赖的版本一致。可以使用以下命令查看:

strings /usr/local/MATLAB/MATLAB_Runtime/v910/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6 | grep GLIBCXX

2、此命令将返回 libstdc++.so.6 使用的 GLIBCXX 版本。确认此版本是否与系统中安装的 GLIBCXX 版本一致。可以使用以下命令查看:

strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

如果两个版本不一致,则说明此问题的原因是版本不兼容。

3、如果版本不兼容,则可以尝试安装正确版本的 libstdc++.so.6。您可以使用以下命令安装:

yum install libstdc++.so.6

安装完成后,重启您的服务并再次尝试调用 MATLAB 所打包的 jar 包,看看问题是否得到解决。

如果问题仍未解决,您可以尝试使用 LD_PRELOAD 环境变量来覆盖系统中的 libstdc++.so.6,以确保 MATLAB 使用的是正确版本的 libstdc++.so.6。您可以使用以下命令设置 LD_PRELOAD 环境变量:

bash
Copy code
export LD_PRELOAD=/path/to/matlab/runtime/v910/sys/os/glnxa64/libstdc++.so.6
其中 /path/to/matlab/runtime/v910/sys/os/glnxa64/libstdc++.so.6 是 MATLAB 所使用的 libstdc++.so.6 的完整路径。设置完毕后,再次尝试调用 MATLAB 所打包的 jar 包,看看问题是否得到解决。

这个情况比较复杂,需要看看具体报错截图