最近在做一个犯罪预测的项目,项目中要求开发语言为java,算法模型采用matlab制作,这样就出现了一个问题:我的java程序如何调用matlab制作的算法模型?
经过这段时间的实验(时间不多,就试验了几次),发现其实网络上的两种方法都可以,第一种方法就是把matlab算法模型打包成exe程序,用java调用exe程序;第二种方法就是把matlab算法模型打包成jar,直接在项目中引用。综合可虑的这两种方法,发现第二种方法的适用面更广,于是选用第二种方法,下面就以matlab2012为例讲解。
java想调用matlab的jar总共有这几步:
1.算法模型打包jar
2.安装matlab运行环境
3.jar包引入java程序
4.模型方法的调用
下面来进行我们的工作:
1、算法模型打包jar
这个过程网络上有很多文章,我主要说一下我遇到的问题:我在一台64位的机器上安装了matlab,然后把算法模型打包成jar,然后把jar包放在我的程序中调用。我的程序机器也是64位,但是jdk为1.7版本32位,安装了matlab的运行环境,这样就发现matlab的jar包调用一直保存“找不到mclmcrrt8_0.dll路径”,在网上找了好多方法都不行,最后通过各种尝试终于找出了问题的原因:matlab安装在64位机器上面,他的默认jdk为1.6版本64位,与我的1.7版本32位不符合,所以一直报错,于是我就把我的jdk换成了1.7版本64位,结果运行正常了。总结问题的原因就是jdk的位数原因,与jdk版本无关。
但是我们在程序开发中jdk版本是固定了,所以你可以选择matlab安装在32或者64位的机器上来编译出32或者64位的jar包,但是jdk版本无法控制。
2、安装matlab运行环境
如果你只是运行而不是开发matlab模型,那么你可以只安装运行环境
3、jar包引入java程序
首先在matlab安装根目录\toolbox\javabuilder\jar目录下找到javabuilder.jar文件,然后拿到你打包出来的jar文件,将两个jar文件全部引入到你的程序中(构建路径,我就不赘述了)。这样你就可以使用你的jar了。
4、模型方法的调用
这一个就很简单了,与普通jar包的使用方法一致!