matlab调用java代码

时间:2024-04-03 15:45:55

Matlab编程简单且拥有强大的计算能力,但是其对于某些场景并不适应,常常需要借助于java代码。Matlab调用java代码首先需要两个步骤:1.将java代码打包成jar包;2.matlab调用。(注意:有一个很重要的前提,matlabjava版本要和安装的java版本一致

1.      使用intellij IDEA编译器将java代码打包成jar包(本人的是intellij 16.3)

(1)      File—>Projectstructure->Artifacts


matlab调用java代码

点击“+”,选择“Jar”,选择Empty或From moduleswith dependencies,一般会使用后者,后者会把在项目中用到的Jar包解压开,当成项目的一部分,打包到最后的Jar包中。但是这样会有一个问题,即,如果项目中引用的Jar包有签名过,最后打包成的Jar包运行时会抛出错误:

“java.lang.SecurityException:Invalid signature file digest for Manifest main attributes”

因此,也可以可以选择Empty,然后在“OutputLayout”中,把自己要打包的文件、文件夹添加进去。对于外部引用的包,笔者全部放在src目录下,因此,在Class Path中,把依赖的jar包添加进去,例如:src/commons-lang3-3.5.jar

src/log4j-1.2.15.jar  src/ json-lib-2.4-jdk15.jar

设置好Main Class,这就不用多说了。

点击OK。

回到IDEA,选择Build-> Build Artifacts,成功生成Jar包。生成的Jar包位于上图设置的Output directory。

使用命令java -jar xxxxx.jar来执行jar包。

2.      matlab调用生成的jar包

(1)      第一步:定位Matlab中Java环境的ext目录

在matlab命令窗口输入disp(java.lang.System.getProperty('java.ext.dirs'));
查询到自己安装的matlab的java环境的ext目录。
(也可以在matlab的窗口输入:edit classpath.txt,然后将你的jar路径填写进去,但是本人没有试过。感兴趣的可以试一下
第二步:将需要的java文件打包放入到ext目录中(网上教程说会输出两个目录,但是本人就出现一个,直接就是安装目录下的ext目录。)

第三步:重启matlab

第四步:测试程序

本人java项目的包名是:com.company

主函数是BaiduAPI

要调用的函数名为:geo(string a , string b)

那么调用的时候直接为:

A=com.company.BaiduAPI;

C = A.geo(a,b);

注意:1.当出现类似下图字样的时候:

matlab调用java代码

需要注意你的包名和主函数的名字是否为这个,或者是不是把打好的jar包导入到相应目录下;

2.当出现以下错误的时候:

 matlab调用java代码

需要注意:(1)你的有参函数里面的参数类型

(2)在matlab中字符串的表示和java中有所不同;


到目前为止就大功告成了。希望对大家有用!