MATLAB: Do I receive “wrong ELF class” errors when running the application created with MATLAB Builder for Java 1.1 (R2007a) on 64-bit Solaris

MATLAB Compiler SDK

I have created a Java class using MATLAB Builder for Java 1.1 (R2007a) on my Solaris machine. I then created a Java program to call methods of this class. However when I execute the Java program I receive the following error:
Exception in thread "main" java.lang.UnsatisfiedLinkError: /devel/archive/R2007a/ship/unix/dist/bin/sol64/libnativemcl76.so: ld.so.1: /devel/archive/R2007a/ship/unix/dist/sys/java/jre/sol64/jre1.5.0/bin/java: fatal: /devel/archive/R2007a/ship/unix/dist/bin/sol64/libnativemcl76.so: wrong ELF class: ELFCLASS64
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at com.mathworks.toolbox.javabuilder.MWMCR.<clinit>(MWMCR.java:25)
at helloworld_jb_sol64.helloworld_jb_sol64class.<init>(helloworld_jb_sol64class.java:47)
at callHelloWorld.main(callHelloWorld.java:7)

Best Answer

The documentation for MATLAB 7.6 (R2008b) has been updated with relevant information. For previous product releases, please read below for any possible workarounds:
There is an omission in the documentation for MATLAB Builder for Java 1.1 (R2007a) relating to the command needed to execute the Java program which calls a Java class created with MATLAB Builder for Java on 64-bit Solaris platforms.
The documentation should say that on 64-bit Solaris machines, you need to include the -d64 flag in the Java command used to run the application. This is because by default the Java Virtual Machine (JVM) starts in 32-bit client mode on 64-bit Solaris machines and the MATLAB Component Runtime (MCR) requires a 64-bit JVM. For example when running the magic square example from the documentation you should use the following command:
matlabroot/sys/java/jre/architecture/jre_directory/bin/java -classpath .:matlabroot/toolbox/javabuilder/jar/javabuilder.jar:MagicDemoJavaApp/magicsquare/distrib/magicsquare.jar -d64 getmagic 5
Related Question