MATLAB(2013b)“doc”无法在Linux系统上从Java加载libxul.so

在openSUSE 13.1 64bit上成功安装MATLAB R2013b之后,当我尝试通过“doc”命令打开MATLAB帮助(请参阅附加消息)时,出现以下错误消息。

MATLAB帮助窗口总是显示损坏的格式和/或文本内容的呈现。

>> doc Exception in thread "XPCOMMessageLoop" java.lang.UnsatisfiedLinkError: /opt/MATLAB/R2013b/sys/jxbrowser/glnxa64/xulrunner/xulrunner-linux-64/libxul.so: dlopen: cannot load any more object with static TLS at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary1(Unknown Source) at java.lang.ClassLoader.loadLibrary0(Unknown Source) at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runtime.load0(Unknown Source) at java.lang.System.load(Unknown Source) at com.teamdev.jxbrowser.gecko.xpcom.impl.linux.LinuxMozillaToolkit.c(Unknown Source) at com.teamdev.jxbrowser.gecko.xpcom.impl.linux.LinuxMozillaToolkit.a(Unknown Source) at com.teamdev.jxbrowser.gecko.xpcom.MozillaToolkit.initialize(Unknown Source) at com.teamdev.jxbrowser.gecko.xpcom.AppShellXPCOMThread$b.run(Unknown Source) Exception in thread "XPCOMMessageLoop" java.lang.UnsatisfiedLinkError: /opt/MATLAB/R2013b/sys/jxbrowser/glnxa64/xulrunner/xulrunner-linux-64/libxul.so: dlopen: cannot load any more object with static TLS at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary1(Unknown Source) at java.lang.ClassLoader.loadLibrary0(Unknown Source) at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runtime.load0(Unknown Source) at java.lang.System.load(Unknown Source) at com.teamdev.jxbrowser.gecko.xpcom.impl.linux.LinuxMozillaToolkit.c(Unknown Source) at com.teamdev.jxbrowser.gecko.xpcom.impl.linux.LinuxMozillaToolkit.a(Unknown Source) at com.teamdev.jxbrowser.gecko.xpcom.MozillaToolkit.initialize(Unknown Source) at com.teamdev.jxbrowser.gecko.xpcom.AppShellXPCOMThread$b.run(Unknown Source) Exception in thread "XPCOMMessageLoop" java.lang.UnsatisfiedLinkError: /opt/MATLAB/R2013b/sys/jxbrowser/glnxa64/xulrunner/xulrunner-linux-64/libxul.so: dlopen: cannot load any more object with static TLS at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary1(Unknown Source) at java.lang.ClassLoader.loadLibrary0(Unknown Source) at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runtime.load0(Unknown Source) at java.lang.System.load(Unknown Source) at com.teamdev.jxbrowser.gecko.xpcom.impl.linux.LinuxMozillaToolkit.c(Unknown Source) at com.teamdev.jxbrowser.gecko.xpcom.impl.linux.LinuxMozillaToolkit.a(Unknown Source) at com.teamdev.jxbrowser.gecko.xpcom.MozillaToolkit.initialize(Unknown Source) at com.teamdev.jxbrowser.gecko.xpcom.AppShellXPCOMThread$b.run(Unknown Source) Exception in thread "XPCOMMessageLoop" java.lang.UnsatisfiedLinkError: /opt/MATLAB/R2013b/sys/jxbrowser/glnxa64/xulrunner/xulrunner-linux-64/libxul.so: dlopen: cannot load any more object with static TLS at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary1(Unknown Source) at java.lang.ClassLoader.loadLibrary0(Unknown Source) at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runtime.load0(Unknown Source) at java.lang.System.load(Unknown Source) at com.teamdev.jxbrowser.gecko.xpcom.impl.linux.LinuxMozillaToolkit.c(Unknown Source) at com.teamdev.jxbrowser.gecko.xpcom.impl.linux.LinuxMozillaToolkit.a(Unknown Source) at com.teamdev.jxbrowser.gecko.xpcom.MozillaToolkit.initialize(Unknown Source) at com.teamdev.jxbrowser.gecko.xpcom.AppShellXPCOMThread$b.run(Unknown Source) Exception in thread "XPCOMMessageLoop" java.lang.UnsatisfiedLinkError: /opt/MATLAB/R2013b/sys/jxbrowser/glnxa64/xulrunner/xulrunner-linux-64/libxul.so: dlopen: cannot load any more object with static TLS at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary1(Unknown Source) at java.lang.ClassLoader.loadLibrary0(Unknown Source) at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runtime.load0(Unknown Source) at java.lang.System.load(Unknown Source) at com.teamdev.jxbrowser.gecko.xpcom.impl.linux.LinuxMozillaToolkit.c(Unknown Source) at com.teamdev.jxbrowser.gecko.xpcom.impl.linux.LinuxMozillaToolkit.a(Unknown Source) at com.teamdev.jxbrowser.gecko.xpcom.MozillaToolkit.initialize(Unknown Source) at com.teamdev.jxbrowser.gecko.xpcom.AppShellXPCOMThread$b.run(Unknown Source) MEvent. CASE! MEvent. CASE! MEvent. CASE! MEvent. CASE! MEvent. CASE! MEvent. CASE! >> 

这是Matlab R2012b及更高版本的Linux特定bug( 官方Mathworks错误报告 )

你可以尝试执行一个启动Matlab的doc并希望在这一点上可以加载必要的库。

编辑:从Mathworks的错误报告引用:

 On Linux machines, when performing linear algebra operations such as matrix multiplications, MATLAB could return the following error: >> b = ones(10)*ones(10); Error using * BLAS loading error: dlopen: cannot load any more object with static TLS Any subsequent linear algebra operations will return the same error. You must restart MATLAB in order to perform further linear algebra operations. Workaround This issue has to do with the loading order of MATLAB's linear algebra library. To work around this issue, load the linear algebra library early in a MATLAB session, by performing a linear algebra operation immediately after MATLAB starts. For example, perform a matrix multiplication: >> ones(10)*ones(10); You can also add the above command to your startup.m file to make MATLAB run it at startup. 

我在MATLAB 2014a中遇到了同样的问题,但是数学工具支持可以帮助我。 他们的解决方案是运行

 webutils.htmlrenderer('basic'); 

在命令窗口中。 参见错误1003952 。 即使在MATLAB 2015a中 ,错误依然存在。