MATLAB R2024a中如何将多个.m文件转为单个.jar文件用于Java项目
将MATLAB R2024a函数打包为Java可调用的.jar文件
一、前置准备
- 确认MATLAB R2024a已安装MATLAB Compiler和MATLAB Compiler SDK组件,未安装的话通过MATLAB主页的「附加功能」搜索安装
- 将所有需要打包的
.m文件放在同一目录,确保函数间的依赖关系可正常解析(比如被主函数调用的辅助函数也要在该目录)
二、使用Library Compiler打包
- 打开MATLAB,命令行输入
deploytool启动打包工具 - 选择「Library Compiler」类型,在输出格式中选Java Package
- 点击「Add main files」,导入所有要打包的
.m文件(包括被主函数调用的辅助函数) - 配置打包参数:
- 在「Package name」中填写符合Java规范的包名(例如
com.matlab.customfuncs) - 在「Class name」中定义生成的Java类名(该类会封装所有MATLAB函数为Java方法)
- 在「Package name」中填写符合Java规范的包名(例如
- 点击右上角「Package」,选择输出目录,等待打包完成。最终的
.jar文件会在输出目录的dist子文件夹中
三、Java项目中调用示例
- 将生成的
.jar文件,以及MATLAB安装目录下runtime\java\jars\matlab路径中的javabuilder.jar添加到Java项目依赖 - 调用示例代码(假设包名为
com.matlab.customfuncs,类名为CustomFuncs):
import com.matlab.customfuncs.CustomFuncs; import com.mathworks.toolbox.javabuilder.MWException; public class MatlabJarTest { public static void main(String[] args) { CustomFuncs matlabInstance = null; try { matlabInstance = new CustomFuncs(); // 调用MATLAB函数myFunction,第一个参数是输出数量,后续为输入参数 Object[] result = matlabInstance.myFunction(1, "testInput"); // 转换并处理输出结果 String output = (String) result[0]; System.out.println("MATLAB函数返回结果:" + output); } catch (MWException e) { e.printStackTrace(); } finally { if (matlabInstance != null) { matlabInstance.dispose(); // 必须释放MATLAB资源 } } } }
四、注意事项
- 运行Java项目的机器需安装MATLAB R2024a Runtime,打包时可选择「Runtime included in package」将Runtime一并打包(会增大文件体积)
- Java传入的参数类型需与MATLAB函数输入匹配:例如MATLAB字符串对应Java
String,数值对应Double等 - 打包前务必测试所有MATLAB函数可正常运行,避免因函数逻辑错误导致打包失败
内容的提问来源于stack exchange,提问作者El_Merendero
相关产品推荐
相关产品推荐

