Java调用matlab以及过程中遇到的各种问题总结
- 首先写一个matlab测试程序,然后在cmd输入deploytool,一开始没反应,我的好几年前的matlab7,装了好久没用了,可能还没这功能,可能本身有什么问题,没关系,重新装一个R2016a,成功跳出了deploytool,美滋滋
- 选择Library Compiler,然后在上面选Java Package,点+号,把刚刚的.m文件加进来,把下面的Class Name改成一个有意义的,方便java调用,然后点绿色√Package,坐等,美滋滋。
- 第一个问题出现了,打包失败了。
- 网上找了原因,Java版本和matlab版本不兼容,参考https://blog.****.net/Danielmumu/article/details/78757927
- 好吧,重新下jdk1.7,参考https://blog.****.net/H12KJGJ/article/details/79240984
- 环境变量——系统变量,该改的要改过来,regedit,该改的要改过来,参考https://blog.****.net/yye894817571/article/details/69934768
- 好的改完了,cmd java -version看一下,第二个问题出现了,报错
Error: could not fine java.dll,Error: could not fine Java SE Runtime Environment.
- 那肯定就是环境变量配置有问题呗。好,找到解决方案,参考https://blog.****.net/weixin_42451493/article/details/81004238
- 配置系统变量的Path
- 再java -version一次,对了
- 然后重新package,成功了,得到了这个文件夹,这个时候我已经无力美滋滋了。
- 新建一个java project,导入两个jar包,一个是刚刚得到的,第二个文件夹里的mySum.jar,另一个是mablab安装文件夹\toolbox\javabuilder\jar\javabuilder.jar,导入.jar方法参考https://blog.****.net/touziss/article/details/81909075
- 好的吧,写java程序,调用一下,最后美滋滋一下
- 刚要美滋滋,问题又来了,我要算1+2,看到报错的那一行是调用matlab写的mySum函数,三个输入变量,理论上来说,第一个变量表示输出变量的个数,第二第三个变量分别表示mySum函数的输入变量,为什么报错呢,告诉我m.mySum的输入变量应该是一个int,还有一个object[] 数组。
- 所以,把mySum的输入变量1和2,变成一个二维Integer数组,就可以了。
- 输出结果
- 好的,再也不想美滋滋了