鉴于labview做不了web(labview强项在于硬件仪器控制,可能也可以做web,还不会),虽然有web发布工具,但是基于远程前面板,最后效果都呈现在前面板上(涉及了跳转页面、matlab绘图等只在服务器端上显示的问题)。因此,打算用java web尝试实现。

首先找了个java调用matlab生成的jar的步骤。在matlab中写了一个验证采样定理的m文件testjava(没有输入参数),在matlab中运行成功后,控制窗口输入deploytool,打开窗口,输入工程并选择生成java package,右边出现了新的项目栏,点击add class,修改class名。注意该名在java调用时就是类的名字。然后add files,选择m文件testjava。然后点击build就可以生成jar,这个生成的过程似乎有点久…更详细可以参考链接:http://zhidao.baidu.com/link?url=XlnSDJIKDlCuec6UsBShMDt6yADdBVtbVID1G8PuBGdjD5Y3pExRB8MmepnAobKbs7R2JYky45rsV-HuJmZksVhteUf9ozkbnR_CoCA0o_u。

接着就可以尝试再eclipse中调用jar。将刚才生成的jar和matlab自带的javabuilder.jar作为externaljars添加到lib中(先以Java SE为例)。然后新建class实现生成的类。一定要将添加的jar给import进来。写法就是调用类,然后执行类的函数。可以参考这个也是调用matlab画图的例子:http://blog.csdn.net/xiaowei_cqu/article/details/7038819。

在Java SE中编译,提示错误,编译所需要的mclmcrrt7_17.dll找不到。百度了这个问题,然后去dll网站下了一个然后复制到system32文件夹中,无用。然后看到另外一种解决办法,说是因为要装个MCR,在matlab路径中有,我的在E:\MATLAB_R2012a\toolbox\compiler\deploy\win32\MCRInstaller.exe中。安装完后就可以运行了,控制台显示正在createplot。

然而我高兴的太早了。画出来的图竟然是空的(就是能显示matlab的画图的外框,但是图是空的,灰色的。这tm什么鬼?继续百度。找到一篇百度经验:http://jingyan.baidu.com/article/9faa7231587bd0473c28cbf9.html,说是jdk和matlab不兼容造成的,我的matlab是2010b的,打-versionjava出来是需要jdk1_6_17。而此时我的环境是jdk1.7的(在dos中java –version)。

那就换个1.6的jdk呗,可以参考这篇文章,http://blog.sina.com.cn/s/blog_88f38b360100yd0j.html。实际上很简单,就是下载个新的jdk,安装,然后修改系统环境变量即可。在用%设置的环境变量中,只需要修改JAVA_HOME即可。我修改成了jdk1.6的路径。

接下来发生的一切简直要让我疯掉:修改了环境变量后,在dos中打java –version,发现还是1.7的环境!我不服,重启了,结果还是1.7环境!我简直不敢相信了,我再检查了一遍环境变量的设置,明明都设置成1.6的路径了。我想会不会刚好1.6的包有问题,于是我又下载安装了1.6_39的升级包,重复以上工作。结果显示还是1.7的环境!

是不是无所谓呀?于是我不管了,在eclipse中新建个1.6的工程,然后用1.6的jdk,结果…现在已经不是画出空的图了,现在连图都画不出来,而是报错:Unsupportedmajor.minor version 51.0。这连图都画不出来了呀,简直要崩溃了,怎么那么费劲呢。再次百度以下这个错误,发现这篇文章,http://swiftlet.net/archives/716。原因是外部jar包使用jdk1.7(jdk7)编译,而使用此jar包的工程jdk版本为jdk1.6(jdk6)。这下我大概能知道原因了:之前因为是1.7的工程,所以能编译,至于画不出来图,那是因为matlab必须联合1.6的jdk才能画出来图。所以jdk必须使用1.6没错,编译不成功的原因在于,我的jar还是1.7的,因为dos中java –version是1.7的,所以生成的jar是1.7的。所以解决办法应该是:使得java –version是1.6,然后重新生成jar,此时就是1.6的包了,然后导入1.6的工程,就可以了。这个连接http://zhidao.baidu.com/link?url=HOIRV3gzG6DnHgD3hBv2deQTb6vlxOvJUn5Sb8Sg205InYrFgwQbod4KGTv4hI2l4yJl9LVmnBGpkfStdm_baK。最下面那位网友的回答我证实了我的想法。我干脆一不做二不休,把jdk1.7卸载了。现在按照环境变量设置的,dos中显示了1.6_39的版本。后来查资料才找到。1.7版本在安装的时候会修改注册表而不管环境变量了,改1.6版本就算修改了环境变量也没有真正的修改jdk环境,唯一的办法只能是在控制面板中将1.7卸载掉。

结果这次终于能顺利的画出来图了,太激动了!接下来我把Java Se移植到Java EE中,在jsp页面或者类中实现,均能画出图来,本地是成功的。接下来我想测试局域网是否能成功。

通过下面文章,http://blog.csdn.net/chendc201/article/details/22905489,顺利配置了tomcat 8086端口在局域网中的防火墙例外,只要网址中的localhost换成我的ip地址,就能够顺利的从其他局域网内的电脑和手机浏览器浏览到我做的所有网页。

然而我还是高兴的太早,一旦我在客户端访问到有matlab画图的页面时,它还是在服务器端弹出了matlab图。好吧,花了半天,效果和在LabVIEW中一样。网上说可以把画出来的图通过html静态显示,配合WebFigure标签可以实现,但是这方面资料特别少,到现在就找到2篇,而且还说的模模糊糊的。后面再说吧,今天太累了,休息一会。

花了一天,解决java调用matlab相关推荐

  1. linux下java调用matlab程序,linux_java调用windows_matlab程序

    0 说明 本文为研究java和matlab的混合编程,进行了详细的测试和探索,以解决linux环境下java程序调用matlab程序的一个应用. linux端的环境 :(运行java程序并调用wind ...

  2. JAVA 调用matlab

    前段时间摸索了java调用matlab东西,不说学的有多深,也算有结果了,达到目的了.也即用java程序可以调用matlab中函数了. 按顺序说吧,最开始肯定是下个matlab看看.下哪一个呢.开始下 ...

  3. java调用matlab 数组_JAVA调用matlab程序 输入输出数据转换

    JAVA调用matlab程序 输入输出数据转换 JAVA 程序调用 matlab函数(matlab导出jar包里的函数).JAVA解析matlab返回数据时,机器需要先安装matlab运行时环境 并 ...

  4. Java调用Matlab

    1 Java调用Matlab方法举例 ◆   将 Matlab 编写的 m 文件转化为 COM(Component Object Model) 组件,在 Java 程序中利用第三方工具包调用 com ...

  5. Java调用Matlab程序

    Java调用Matlab程序_Macrocell-CSDN博客_java调用matlab

  6. java调用matlab绘图

    环境: 系统:kali linux 2017 java: 1.8 matlab:R2016b idea:2016 1.编写matlab脚本: drawplot.m %画图 自定义函数drawplot ...

  7. Java和MATLAB混合编程,Java调用MATLAB代码

    大家可能像我一样,是MATLAB 2014a或者MATLAB 2015a或者更高,因此找不到java package. 大家可能看到其他博客配置matlab 2013版本的,所以在这里就记录下MATL ...

  8. JAVA调用Matlab代码(MATLAB 2014a)

    本人考虑到用java绘制图形以及实现一些计算效率不高,实现起来有些复杂.而利用MATLAB写好相应的计算函数,然后打包成jar包供Java调用,在某些情况下会更加方便.或者有些时候会涉及到使用Java ...

  9. Windows下的Matlab与Java的混合编程,Java调用matlab编译的jar包(linux下请看我另外版本!)

    近来因为甲方需要做拟合等功能,需要用到matlab软件,并将其功能在java中实现,然后在服务器上也要实现,因为之前根本没有听说过,所以我苦心泣血,狂干一星期找到了,踩了无数个坑,终于实现了,因此想分 ...

最新文章

  1. C++调用Python文件,TensorFlow和PyTorch构建的深度学习模型,无法使用GPU的情况分析。
  2. 从AlexNet到BERT:深度学习中那些最重要idea的最简单回顾
  3. AntD Checkbox 的三种状态处理
  4. python语言介绍-Python这门语言的大概介绍
  5. 竞争者无数的大数据赛道,这家创业公司靠什么获得众多资本青睐?
  6. 无意看到,当真给力!记住:永远不要在MySQL中使用UTF-8
  7. 上海哪个图书馆营业时间最长
  8. java:Map借口及其子类HashMap五,identityHashMap子类
  9. ajaxfileupload 监听上传进度_一篇文章学会文件上传
  10. mysql查看数据库表大小语句_MySQL查看数据库表容量大小的命令语句讲解
  11. mysql常见报错及问题排查
  12. ad输出光绘文件_AD输出文件教程
  13. ARcore概述及开发环境.md
  14. Android Studio配置ADB环境变量
  15. 2015年 教师全员远程培训挂机 教师远程全员培训挂机 教师继续教育挂机 挂机软件 全国通用版...
  16. bugku-pokergame
  17. dhclient命令 – 动态获取或释放IP地址
  18. 李白最经典的20首诗排行榜
  19. js 根据公历日期 算出农历_Javascript农历与公历相互转换
  20. Android 如何判断萤石云视频是否可以播放

热门文章

  1. 详解Camtasia的视频导出功能
  2. html表格数据按公式自动计算,填报表自动计算 - 集深数据系统
  3. 民宿管理系统课程设计_基于“能力本位”的中职酒店类专业《民宿管家服务》课程开发研究...
  4. cmake 编译 linux 库,使用CMake编译跨平台静态库
  5. 计算机毕业设计Java自行车租借管理系统(源码+系统+mysql数据库+Lw文档)
  6. 2018第九届环中国国际公路自行车赛落下帷幕
  7. python正则表达式 简单的手机号码格式的验证
  8. tiptop debug 更改变量值
  9. 使用坚果云的情况下pc版zotero和ipad版zotero同步及文献下载
  10. AcWing 2983. 玩具