0 说明

本文为研究java和matlab的混合编程,进行了详细的测试和探索,以解决linux环境下java程序调用matlab程序的一个应用。

 

linux端的环境 :(运行java程序并调用windows环境下的Matlab生成的jar包文件)

l Linux ubuntu 3.5.0-17-generic

l java version "1.6.0_45"

l MCR_R2012a_glnx86_installer.zip

windows端的环境:(调试matlab程序,并使用javabuilder生成供java调用的jar包文件)

l win7 X86(32位)

l java version "1.6.0_27"

l matlab 2012a

l eclipse版本不限


(64位的方法雷同)

1 win7下安装vm和vmtool

在vm上安装win7(x86)32位;注意处理器是intel的。(amd处理器需要特殊处理,此处略)

2 win7下安装matlab

7.14.0.739 (R2012a),需要虚拟光驱。

注意用standalone安装,可以参考crack路径下的install提示,安装完成后需要导入证书

3 Matlab查看需要的jdk版本

>> version -java

ans =Java 1.6.0_17-b04 with Sun Microsystems Inc. Java HotSpot(TM) Client VM mixed mode

4 win7下载和安装jdk

http://www.oracle.com/technetwork/java/javase/downloads/index.html

下载1.6的当前最高版本

 

配置:

新建 JAVA_HOME    jdk路径

新建 CLASSPATH     .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

新建 PATH    %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

 

在matlab中输入!javac验证是否安装jdk成功

5 Matlab新建helloworld.m文件

function  helloworld
% clc
info=char( 'MATLAB hello world!' );
disp(info);

 

在matlab中测试输入 helloworld将会打印出这句话。

6 Matlab新建java project

可以命令台输入 >> deploytool 调出ja

添加class和m等资源,按编译按钮,大概需要几分钟时间。

matlab java运行时 matlab 调用java_java

7 win7下测试java调用matlab

eclipse新建一个测试工程,导入生成的helloworld.jar和javabuilder.jar(注意系统版本对应)

测试结果如下

matlab java运行时 matlab 调用java_matlab java运行时_02

8 linux下载和安装mcr

下载mcr

(这里选择linux 32位的mcr X86)

http://www.mathworks.cn/products/compiler/mcr/index.html

 

安装mcr

installer_input.txt的字段,打开#开头的语句,并赋值

修改安装路径

    agreeToLicense=yes  

    fileInstallationKey=38699-60149-36808-21840-05491

    licensePath=/home/hadoop/mcr/lic_standalone.dat

修改日志路径

    mode=silent

等等

(如果不行则用root命令进行安装)

如下提示则安装成功

(Jun 17, 2013 20:09:03) Assembling product list...
(Jun 17, 2013 20:09:16) The destination folder /hadoop/matlab does not exist.  Would you like to create it?
(Jun 17, 2013 20:09:17) Installing Product: MATLAB Compiler Runtime 7.17
(Jun 17, 2013 20:11:12) Notes:
On the target computer, append the following to your LD_LIBRARY_PATH environment variable:
/hadoop/matlab/v717/runtime/glnx86:/hadoop/matlab/v717/bin/glnx86:/hadoop/matlab/v717/sys/os/glnx86:/hadoop/matlab/v717/sys/java/jre/glnx86/jre/lib/i386/native_threads:/hadoop/matlab/v717/sys/java/jre/glnx86/jre/lib/i386/server:/hadoop/matlab/v717/sys/java/jre/glnx86/jre/lib/i386
Next, set the XAPPLRESDIR environment variable to the following value:
/hadoop/matlab/v717/X11/app-defaults
(Jun 17, 2013 20:11:12) Exiting with status 0
(Jun 17, 2013 20:11:12) End - Successful.

 

下载和安装jdk

可参考 http://developer.51cto.com/art/200907/135155.htm

配置jdk和mcr

>>vi .profile   
export JAVA_HOME=/hadoop/jdk1.6.0_45
export JRE_HOME=/hadoop/jdk1.6.0_45/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
#这些是jdk的环境变量
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/hadoop/mcr/bin/glnx86/:/hadoop/matlab/v717/runtime/glnx86:/hadoop/matlab/v717/bin/glnx86:/hadoop/matlab/v717/sys/os/gln
x86:/hadoop/matlab/v717/sys/java/jre/glnx86/jre/lib/i386/native_threads:/hadoop/matlab/v717/sys/java/jre/glnx86/jre/lib/i386/server:/hadoop/matlab/v717/sys/java
/jre/glnx86/jre/lib/i386
export XAPPLRESDIR=$XAPPLRESDIR:/hadoop/matlab/v717/X11/app-defaults
#后面两个环境变量是matlab的配置路径,安装matlab完成后会自动提示。

其他设置

    vi ~/.bashrc

    alias matlab='/usr/local/MATLAB/MATLAB_Compiler_Runtime/v717/bin/matlab'

matlab命令找不到libc.so.6,则sudo ln -s /lib/i386-linux-gnu/libc-2.15.so /lib/libc.so.6

matlab命令报matlab: No MATLAB executable for this machine architecture.错,

下载linux jdk x86(32位)

http://download.oracle.com/otn-pub/java/jdk/6u45-b06/jdk-6u45-linux-i586.bin?AuthParam=1371469475_8f7477cdc6c7ca6852a4cc44e7010c6c

9 linux测试java调用matlab

用eclipse fat-jar对此进行打包后,注意将7中的javabuilder换成javabuilder\ja\glnx86路径下的jar文件

成功。

 

matlab java运行时 matlab 调用java_hadoop_03

到此,java调用matlab程序的整个过程基本叙述结束。