How do I overcome the Java MCR proxy library initialisation error in Ubuntu?
Show older comments
I would like to run a jar, which was built with Matlab's Java Builder on Windows 7 in Ubuntu 14.04 using the MCR libraries. However, I am receiving the following error when testing the MCR installation for an App built with Java Builder:
sudo java -classpath "/opt/MCR/v84/toolbox/javabuilder/jar/javabuilder.jar:/media/sf_shared/for_testing/makesqr.jar" makesqr.Class1 5
java.lang.ExceptionInInitializerError
at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration.getProxyLibraryDir(MCRConfiguration.java:260)
at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration$MCRRoot.get(MCRConfiguration.java:71)
58)
...
at makesqr.Class1.main(Class1.java:112)
Caused by: java.lang.NullPointerException
at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration$ProxyLibraryDir.get(MCRConfiguration.java:225)
at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration$ProxyLibraryDir.<clinit>(MCRConfiguration.java:255)
... 10 more
In order to reproduce the error, or to discover where I went wrong, here are all the steps I have done:
Background: I have created an Ubuntu VirtualBox from LAPP stack and added the Ubuntu desktop (Unity: sudo apt-get install ubuntu-desktop). Now I am attempting to install the MCR.
- Download MCR zip and extract to MCR_SOURCE
- Go to my folder that contains the files: cd /media/sf_shared/MCR_ SOURCE
- Change installer_input.txt file:
destinationFolder=/opt/MCR
agreeToLicense=yes
outputFile=/opt/install.log
mode=silent
product.MATLAB
product.MATLAB_Builder_JA
# Note: To find out the required toolboxes >> start Matlab >> run your code and find out which toolboxes were used with: license('inuse')
- Install MCR: sudo ./install -inputFile /media/sf_shared/MCR_SOURCE/installer_input.txt >> success
- Note changing the /etc/environment file removes the sidebar from my Ubuntu desktop (another issue), so instead I am exporting the variables directly to a terminal. (Note: X11/app-defaults folder does not exist)
export LD_LIBRARY_PATH="/opt/MCR/v84/runtime/glnxa64:/opt/MCR/v84/bin/glnxa64:/opt/MCR/v84/sys/os/glnxa64:${LD_LIBRARY_PATH}"
export XAPPLRESDIR="/opt/MCR/v84/X11/app-defaults"
- Change the ownership of the /opt/MCR folder to my user name: sudo chown -R my-user-name:root /opt/MCR/
- Relax file and folder permissions for the /opt/MCR/ folder: sudo find /opt/MCR -type f -exec chmod 775 {} \; and sudo find /opt/MCR -type d -exec chmod 775 {} \;
- Install Java on Ubuntu: sudo apt-get install openjdk-7-jre; check existence with java-version (see here for details).
- Create the Java package makesqr as explained in "Matlab's JavaBuilder tutorial". This step is done on my Windows 7 machine, which runs Matlab R2014b (asserted that this is in accordance with the downloaded MCR earlier on). Matlab ver states that Java Version: Java 1.7.0_11-b21 with Oracle Corporation Java HotSpot™ 64-Bit Server VM mixed mode is used, and MATLAB Builder JA (Version 2.3.2).
- Test that it runs in Windows:
C:\>java -classpath "C:\MATLAB\R2014b\toolbox\javabuilder\jar\javabuilder.jar";C:\MATLAB\R2014b\work\makesqr\for_testing\makesqr.jar makesqr.Class1 5
ans =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
- Make the package available to Ubuntu: I have copied the for_testing directory to a folder that my Ubuntu VM and Windows machine share. (double check ownership and permissions - similar to MCR folder step)
- Test MCR with Java:
sudo java -classpath "/opt/MCR/v84/toolbox/javabuilder/jar/javabuilder.jar:/media/sf_shared/for_testing/makesqr.jar" makesqr.Class1 5
This is where the above mentioned error message occurs. The error message indicates that the MCRConfiguration$ProxyLibraryDir cannot be obtained.
- What is this MCR configuration library directory?
- Do I need to add "this folder" to the classpath?
- Is something wrong of how the LD_LIBRARY_PATH or XAPPLRESDIR were set?
Accepted Answer
More Answers (0)
Categories
Find more on Introduction to Installation and Licensing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!