MATLAB JA Builder throws NullPointerException in MCRConfiguration

…衆ロ難τιáo~ 提交于 2019-12-23 18:23:06

问题


I'm trying to execute a MATLAB function from Java using JA Builder.

I followed the MATLAB JA Builder help documentation - the HelloWorld and MagicSquare examples and receive the following stack trace each time:

Exception in thread "main" java.lang.ExceptionInInitializerError
at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration.getProxyLibraryDir(MCRConfiguration.java:163)
at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration$MCRRoot.get(MCRConfiguration.java:77)
at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration$MCRRoot.<clinit>(MCRConfiguration.java:87)
at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration.getMCRRoot(MCRConfiguration.java:92)
at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration$ModuleDir.<clinit>(MCRConfiguration.java:66)
at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration.getModuleDir(MCRConfiguration.java:71)
at com.mathworks.toolbox.javabuilder.internal.MWMCR.<clinit>(MWMCR.java:1573)
at com.mathworks.toolbox.javabuilder.MWUtil.GetUnknownClassID(MWUtil.java:727)
at com.mathworks.toolbox.javabuilder.MWClassID.<clinit>(MWClassID.java:41)
at getmagic.main(getmagic.java:36)
Caused by: java.lang.NullPointerException
    at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration$ProxyLibraryDir.get(MCRConfiguration.java:143)
    at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration$ProxyLibraryDir.<clinit>(MCRConfiguration.java:158)
    ... 10 more

Line 36 in getmagic.java is:

n = new MWNumericArray(Double.valueOf(args[0]), MWClassID.DOUBLE);

Is there another JAR or set of config files I need to include? The program currently references javabuilder.jar and the compiled magicsquare.jar from MATLAB as specified in the MATLAB JA Builder help documentation.

Any thoughts? Thanks


回答1:


You need to configure the following environment variables:

LD_LIBRARY_PATH

XAPPLRESDIR

When installing MCR, the installer would tell you their required values (which depend on your mcrroot, the dir where MCR is installed). e.g. for /usr/local/MATLAB/ set

export XAPPLRESDIR=/usr/local/MATLAB/MATLAB_Compiler_Runtime/v81/X11/app-defaults



回答2:


This setting worked for me on Linux:

export LD_LIBRARY_PATH=/usr/lib/matlab-8.6/runtime/glnxa64 \
       /usr/lib/matlab-8.6/bin/glnxa64 \
       /usr/lib/matlab-8.6/sys/os/glnxa64 \
       /usr/lib/matlab-8.6/sys/opengl/lib/glnxa64

You can find instructions for other OSes at http://www.mathworks.com/help/compiler_sdk/java/mcr-path-settings-for-run-time-deployment.html



来源:https://stackoverflow.com/questions/5686761/matlab-ja-builder-throws-nullpointerexception-in-mcrconfiguration

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!