利用matlab生成jar包

本博客转载自http://blog.csdn.net/wengdada/article/details/52017274

主要过程:利用MATLAB的Compiler工具将MATLAB函数编译成.jar文件,在Eclipse中实现对.jar文件中函数的调用,以此实现MATLAB和JAVA的混合编程。


1.环境配置要求:运行机器上必须装有JRE并且版本要和MatLab(Matlab这里用的是2016b版本)自带的JRE版本保持一致。在Matlabd的Command Windows中输入【version -java】以及打开cmd 分别输入命令【java -version】和【javac -version】分别验证编译和运行版本。

利用matlab生成jar包_第1张图片
在matlab中验证matlab用的jdk版本

利用matlab生成jar包_第2张图片
在cmd中验证系统中安装的jdk版本

2.在Matlab中新建一个函数文件,编写需打包成.jar到的Matlab函数并保存,这里以一个rgbtogray()函数为例。

Paste_Image.png

代码如下:

   %函数功能:rgbtogray()这个函数将D:\matlab_java_test\目录下的所有.jpg文件转化为灰度图,
  %并且显示出来,之后将得到的灰度图改名存放在原来的目录下
  %status:函数返回值,若成功处理图片,放回SUCCESS;
  %file_path:输入参数,要处理的图片所在的路径 
  img_path_list = dir(strcat(file_path,'*.jpg'));%获取该文件夹中所有jpg格式的图像
  photo_num = length(img_path_list);%获取该文件夹中所有jpg格式的图像的数量 
  disp('The number of pictures '); 
  fprintf('%d \n',photo_num);% 显示图像数量 
  if photo_num > 0 %.jpg的图像存在
    for j = 1:photo_num image_name = img_path_list(j).name;% 图像名
      image = imread(strcat(file_path,image_name)); 
      Image = rgb2gray(image);%调用matlab原有函数将图片转化为灰度图 
      imshow(Image); 
      imwrite(Image,strcat('D:\matlab_java_test\new',image_name,'.jpg'));%保存图片 
      pause(2);%暂停两秒,用来显示图像 
    end 
    close all; %由于出来好多个figure,一键关闭 
    status = 'SUCCESS'; 
  end
end```
***
3.在Matlab下选择应用程序,使用Library Compiler工具得到Matlab函数的.jar文件。打开Library Compiler工具后,选择Java Package,再点击+号,选择要打包的.m文件,填写修改相关的信息,红框4显示的是打包成.jar文件后里面包含的类以及方法的名称,信息可以根据自己需要更改,最后单击Package。生成的文件我存放在D盘下,可以看到有四个主要的部分,for_redistribution文件,for_redistribution_files_only文件,for_testing文件以及PackagingLog.txt。

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2761157-5920fa85ba601706.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2761157-35e6a8627d61962e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2761157-32f3533ddc62d9cf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


-for_redistribution包含用于安装应用程序和MATLAB Runtime的文件,可以将这份文件复制到没有安装Matlab的电脑上,安装该文件,在安装过程中会提示要安装独立的共享库MATLAB Runtime,安装之后不需要Matlab也可以运行编译后的Matlab的程序或者元件(The MATLAB Runtime is a standalone set of shared libraries that enables the execution of compiled MATLAB applications or components on computers that do not have MATLAB installed)。 

-for_redistribution_files_only文件夹包含应用程序的重新发布所需的文件。这些文件可以分发到那些有MATLAB或者有 MATLAB Runtime 的用户的电脑上。

 -for_testing文件夹包含创建的所有由MCC创建的文件,像二进制文件和jar,头和源文件,使用这些文件来测试安装。 -PackagingLog.txt是由编译器生成的日志文件。 如果.jar库中的内容不熟悉也可以找到doc下的html文件夹,打开index.html,里面有Javadoc参考资料。

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2761157-d01df2cc7ed18445.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2761157-d687249cfd1a1106.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

***
4.打开Eclipse,新建一个Java Project,命名为TestMatlab,新建一个类命名为Test,然后把生成的.jar文件(如rgbtogray.jar)复制到该工程下,除此之外,还要将另外一个.jar文件复制到该工程下,该文件是javabuilder.jar,在*\toolbox\javabuilder\jar\win64\javabuilder.jar目录下可以找到,*是MATLAB的安装目录或者MATLAB Runtime的安装目录,这两个目录下均可以找到toolbox\javabuilder\jar\win64\javabuilder.jar。将.jar文件复制到TestMatlab工程下之后,选中该工程,单击file,选择Properties,选择Java Build Path,选择Libraries,选择ADD JARs,再将需要的.jar添加进去。

![](http://upload-images.jianshu.io/upload_images/2761157-0fd31b1db0131de8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
***
5.编写Java测试代码,代码如下:

import com.mathworks.toolbox.javabuilder.MWException;
import rgbtogray.RgbtoGray;
//status :函数返回值存放于status
//status = matlab.rgbtogray(1,"D:\matlab_java_test\")
//1代表原来函数需要的参数个数为1
//"D:\matlab_java_test\"代表原来函数中的file_path参数
public class Test {
public static void main(String[] args) { // TODO Auto-generated method stub
try { RgbtoGray matlab = new RgbtoGray();
Object[] status ;
status = matlab.rgbtogray(1,"D:\matlab_java_test\");
for(Object i:status)
System.out.println(i);
} catch (MWException e) { // TODO Auto-generated catch block
e.printStackTrace();
}//这里RgbtoGray matlab = new RgbtoGray()时需要抛出异常
RgbtoGray.disposeAllInstances();
}
}```

5.运行结果:可以看到函数成功地调用了Matlab函数,将图像灰度化,并且函数执行完之后成功返回了SUCCESS.

Paste_Image.png
Paste_Image.png
Paste_Image.png

你可能感兴趣的:(利用matlab生成jar包)