(matlab内置JDk和windows版本JDK一定要一致)否则打包报错
一、配置要求
1、MATLAB版本要求:R2016a版本
判断是不是支持MATLAB Builder JA : 检查MATLAB安装文件夹下toolbox中是否有javabuilder这一项。
2、安装JDK1.7版本。
我的是jdk1.7.0_80
二、环境配置
1、配置环境
a)设置变量JAVA_HOME:C:\ProgramFiles\Java\jdk1.7.0_80
(必须设置)
b)设置JAVA系统变量:
CLASSPTH:.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;
Path:C:\Program Files\Java\jdk1.7.0_80\bin;
c)添加路径D:\MATLAB\toolbox\javabuilder\jar\javabuilder.jar;到CLASSPTH。
进行完上述设置后就可以用Java Builder简单的开发了。但需要说明的是,如果你的Java程序中还调用了其他的.jar包,则应该在CLASSPTH中进行相应的设置。
特别注意:所有路径中最好不要包含中文、空格,否则将解析不正确。
2、配置检查
a)CMD窗口键入 java –version和javac -version ,返回
c)MATLAB窗口键入getenv JAVA_HOME,返回JDK的路径
三、用JAVA Builder创建JAVA组件
1、编写、测试并保存用来创建Java组件的MATLAB代码(.m文件)。
drawplot.m
%画图 自定义函数drawplot 参数 x y
function drawplot(x, y)
plot(x, y); %%使用matlab函数plot()作图
grid on %网格显示
xlabel('X轴值')
ylabel('Y轴值')
title('Java调用MatLab作图例子')
2、在Command Window中执行deploytool,打开Deployment tool窗口。
如果出现失败
ant:
<ant>
<mkdir dir="F:\BaiduYunDownload\MATLAB\test\for_redistribution" />
<mkdir dir="F:\BaiduYunDownload\MATLAB\test\for_testing" />
</ant>
mcc -W lib:test -T link:lib -d F:\BaiduYunDownload\MATLAB\test\for_testing -v F:\BaiduYunDownload\MATLAB\test.m class{Class1:F:\BaiduYunDownload\MATLAB\test.m}
Test checkout of feature 'Compiler' failed.
mcc 失败。
解决办法:下载一个破解完成的matlab R2014a fully crack.rar,然后替换掉就可以啦
分享我的网盘 http://pan.baidu.com/s/1nvQv9CP
到这里打包工作全部完成
注:整个工程的结构关系:
对应关系表格:
创建后
创建前
备注
包packag-
com.mathworks.projectname
在JAVA中用于import导入
组件component
projectname/componentname
类class
projectname/classname(default name,can rename class)
在JAVA中需要实例化的类
方法method
函数.m文件
functionname.m
在JAVA中通过实例化之后的类来调用的方法
1、在Myeclipse中创建JAVA工程,在工程属性的BuildPath中,添加两个jar包:javabuilder.jar以及新生成的projectname.jar包。
2、编写JAVA函数,调用刚刚生成好的.jar中的方法。开始导入:
import com.mathworks.toolbox.javabuilder.*;
import com.mathworks.componentname.classname;
3、JAVA到MATLAB之间的数据类型转换。
a)手动转换(关于MWAray类的用法,参见:MATLAB help文件中com.mathworks.toolbox.javabuilder package)
b)自动转换(用JAVA语言定义的类、数据,存储使用的数据。Eg. java.lang.Double)
具体的java 代码
ConnectMatLabTest.java
package com.xiami.test;
import com.mathworks.toolbox.javabuilder.MWArray;
import com.mathworks.toolbox.javabuilder.MWClassID;
import com.mathworks.toolbox.javabuilder.MWComplexity;
import com.mathworks.toolbox.javabuilder.MWNumericArray;
import Demo.plotter;
public class ConnectMatLabTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MWNumericArray x = null; // 存放x值的数组
MWNumericArray y = null; // 存放y值的数组
plotter thePlot = null; // plotter类的实例(在MatLab编译时,新建的类)
int n = 20; // 作图点数
try {
// 分配x、y的值
int[] dims = { 1, n };
x = MWNumericArray.newInstance(dims, MWClassID.DOUBLE,
MWComplexity.REAL);
y = MWNumericArray.newInstance(dims, MWClassID.DOUBLE,
MWComplexity.REAL);
// 定义 y = x^2
for (int i = 1; i <= n; i++) {
x.set(i, i);
y.set(i, i * i);
}
// 初始化plotter的对象
thePlot = new plotter();
// 作图
thePlot.drawplot(x, y);
thePlot.waitForFigures();
}
catch (Exception e) {
System.out.println("Exception: " + e.toString());
}
finally {
// 释放本地资源
MWArray.disposeArray(x);
MWArray.disposeArray(y);
if (thePlot != null)
thePlot.dispose();
}
}
}
如果运行报错
Caused by: java.lang.UnsatisfiedLinkError: Failed to find the library mclmcrrt8_3.dll, required by MATLAB Builder JA, on java.library.path. This library is typically installed along with MATLAB or the MCR, its absence may indicate an issue with that installation or the current path configuration.The MCR version that this component is trying to use is: 8.3.
本机当前安装版本,和引用的Mtalab生成的jar不是同一个版本。升级当前Matlab版本,或使用和本机相同的版本生成 jar文件。
运行的效果