JAVA语言之64位 JDK 1.8 调用Matlab 2017b打包的jar
小标 2018-07-17 来源 : 阅读 935 评论 0

摘要:本文主要向大家介绍了JAVA语言之64位 JDK 1.8 调用Matlab 2017b打包的jar,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了JAVA语言之64位 JDK 1.8 调用Matlab 2017b打包的jar,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

DK写在前面:

写这篇文章的主要目的是记录一次java调用matlab 打包的jar过程,也参考了很多网上的文章,因为步骤雷同,所以其中一些截图就引用网上的了,以备将来查阅。

文章分为2大部分,一是matlab环境和打包步骤的介绍,二是在安装有matlab和没有安装matlab的机器上,调用和运行matlab打包的 jar 方法。

 

第一部分:

matlab环境安装和打包jar文件:

本次试验所用的软件及版本为:matlab 2017b, jkd 1.8;

1、matlab 2017b和jdk 1.8的安装配置步骤,不在赘述。

2、脚本编写和打包jar

2.1 打开matlab主程序,显示matlab主页面,在左侧是matlab当前文件夹目录,中间为命令窗口,右边是工作空间,如图:

 

可以点击左侧当前文件夹窗口上方的图标,更改matlab当前文件夹;

2.2 新建 .m 扩展名的脚本文件

新建脚本有两种方式,一是直接点击ribbon界面菜单栏的新建按钮,在下拉列表中,选择脚本;二是在左侧当前文件夹目录树中,右键,选择新建脚本命令,两种方式是一样的。

2.3 编写函数

双击打开新建的脚本文件,再输入脚本,在此试验借用了网上的一小段代码,“短小精悍”,就拿来主义了。

%画图 自定义函数drawplot 参数 x y

   function drawplot(x, y)

    plot(x, y); %%使用matlab函数plot()作图

    grid on %网格显示

    xlabel('X轴值')

    ylabel('Y轴值')

    title('Java调用MatLab作图例子')

   

 

直接将以上代码复制粘贴到脚本文件中;

2.4 打包jar

在命令窗口中输入deploytool(可在输入几个字母后,按tab键,有代码提示),弹出Matlab Compiler窗口:

 

选择 Library Compiler ,弹出如下窗口:

 

 按图中标注的数字顺序依次选择和输入jar包名称、类名和选择脚本文件,最后单击 package按钮,在弹出的保存工程窗口选择保存位置和填写工程名称,打包成功截图如下:

 

2.5 打包成功之后,会生成下图所示的几个文件夹,具体每个文件夹的作用,没有深究,我们只需从下图 for_testing 文件夹,找到我们需要的在上2.3步骤中命名的 jar 包即可。

 

 

到此,matlab将脚本文件打包成可被 java 调用的 jar 的步骤已经完成。

 

第二部分:

该部分分为2种情况下调用方式:一是在安装有相应版本的 matlab 软件的机器上调用 ,二是在安装matlab compiler runtime (简称 mcr,下文所提到的 mcr,都指该软件) 的机器上调用。

准备所需的 jar:除了在上一部分提到的 matlab 打包生成的 jar 之外 ,还需要在 matlab 安装目录下的 javabuilder.jar,其所在位置如下图(本机安装目录是 c:/Program Files/MATLAB):

(注意:无论是否在安装 matlab 的机器上调用 matlab 所打包的 jar,都要保证 jdk 版本与位数与 matlab 所要求的一致)

 

 

一:在安装了相应版本的 matlab 软件的机器上调用打包的 jar  :

1、在安装了相应版本的 matlab 机器上调用打包的 jar 时,一般情况下,不需要再配置 matlab 环境,因为我们在安装时,软件自动在环境变量 Path 下配置了相关配置,我们只需要检查一下,是否存在相关配置即可,如果没有 matlab 配置,手动添加即可:

配置为:

C:\Program Files\MATLAB\R2017b\runtime\win64;

C:\Program Files\MATLAB\R2017b\bin;

这两个配置还有顺序要求,runtime要在前(根据看到的其他文章中说明,猜测的,没有实际测试)。

2、 java 工程调用

在 myeclipse 中新建 java 工程,将在本部分提到的2个jar包添加到工程引用,并将以下代码写在测试类的 main 方法中,下面的代码中的类名与文章第一部分打包截图有所不一致,读者在按以下代码运行时,应根据代码后面的注释,修改为实际 jar 包中的类名和方法名。

public static void main(String[] args) {

        MWNumericArray x = null; // 存放x值的数组

        MWNumericArray y = null; // 存放y值的数组

        plotter plot = null; // 自定义plotter实例,即打包时所指定的类名,根据实际情况更改

         

        int n = 20;//做图点数

        try {

            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, Math.pow(i, 2));

            }

             

            //初始化plotter

            plot = new plotter();

             

            //做图

            plot.drawplot(x, y);// 在脚本文件中的函数名,根据实际情更改

            plot.waitForFigures();// 不调用该句,无法弹出绘制图形窗口

             

        } catch (Exception e) {

            // TODO: handle exception

        } finally {

            MWArray.disposeArray(x);

            MWArray.disposeArray(y);

            if(plot != null) {

                plot.dispose();

            }

        }

          

}

  

 

二:在未安装 matlab软件,但安装了 mcr 的机器上调用打包的 jar:

 在没有安装相应版本的 matlab 机器上调用 matlab jar时,应当安装 mcr 环境。

1、安装 mcr

获取 mcr 安装包有两种途径,

(1)从 matlab 官网下载对应版本的 mcr。

本次测试所用的 matlab 软件为 2017b版,故在官网(https://cn.mathworks.com/products/compiler/matlab-runtime.html)下载了如下版本的安装包:

 

在下载完成后得到以MCR_R2017b_win64_installer.exe命名的安装文件,在安装之前,要先解压所下载的文件,虽然是以 exe 结尾的文件,但仍然可解压,如果不解压,在安装过程中可能会出现问题(亲测)。

安装完成后会,会将 C:\Program Files\MATLAB\MATLAB Runtime\v93\runtime\win64 添加到 Path 环境变量中,如果没有,需要添加该配置。

 

(2)从已安装 matlab 的目录下拷贝;其所在的目录为:(该种安装方式未测试)

 %matlab安装目录%\R2017b\toolbox\compiler\deploy\win64

 

找到该文件后,在安装之前,应当先解压该该文件(虽然是以.exe结尾的文件,但仍然可解压,如果不解压,安装过程中有可能出现问题)

安装完成后会,会将 C:\Program Files\MATLAB\MATLAB Runtime\v93\runtime\win64 添加到 Path 环境变量中,如果没有,需要添加该配置。

 2、java 调用

该部分与第一部分中的java调用相同,同样出现上文出现的绘图结果窗口。

 

 至此,完成。

以上就是职坐标整理发布关于JAVA的介绍,先祝大家对它有了一定的了解吧,了解更多内容,请关注职坐标编程语言JAVA频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程