首页 > 代码库 > java/matlab混合编程应用移植到其他电脑上遇到的问题

java/matlab混合编程应用移植到其他电脑上遇到的问题

问题1:jar包部署在其他电脑上设置vm参数无效

@echo off
start java -Xmx1028M -Xms1028M -XX:PermSize=100M -XX:MaxPermSize=100M -XX:SurvivorRatio=8 -jar Edition_1.0_fat.jar

要把参数设置在前面才有效,开始把jar包放前面虽然自己电脑能运行但是其他人的电脑不能运行

 

问题2:# An unexpected error has been detected by HotSpot Virtual Machine:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7c911010, pid=3244, tid=280
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_02-b09 mixed mode, sharing)
# Problematic frame:
# C [nativemcl.dll+0x1010]
#
# An error report file with more information is saved as hs_err_pid3244.log
#
# If you would like to submit a bug report, please visit:
HotSpot Virtual Machine Error Reporting Page

这个问题真的是十分的难搞定,网上google,baidu了好久都没有解决方案,在我打了一盘dota之后,突然来了灵感!!!!我先说说我为什么会出问题,我是用java调用matlab的代码编swing框架的一个算法程序,在代码进行到调用matlab函数的时候出现了这个问题,这是内存泄露的问题,在我自己的电脑上并没有这个问题,但是在别人电脑上有,琢磨了好久后终于发现了端倪!下面是我的解决办法

右击我的电脑-》属性-》高级系统设置-》高级目录下的环境变量-》系统变量中的path->>将jre的path路径放在matlab的运行环境前!!!这里是最关键的一步

例如%JAVA_HOME%\jre\bin;D:\matlab\my_bin\runtime\win64;这样就不会出现问题了,至少我的是这么解决的,并且我还没看到过其他的解决办法,网上有很多人说是jdk的原因,个人感觉有些可能是,但是绝大部分不是

# C [nativemcl.dll+0x1010]这句话,这是调用了本地库!!应该就是进入matlab的代码层,是在调用环节出的问题

 

还有一个问题,是没找到类,具体错误信息这里忘记了,没给出来,我这里给出一些思路,就是你用高级的jdk(例如1.8)编写的程序放在了低级的jre(1.7)上运行,有些类型就找不到,所以编写程序的时候一定要注意jdk的版本号,下面是关于jdk的一篇文章 

java compiler compliance level jdk区别

 

当打成jar包时会出现这个问题,我遇到过两次,光看日志真的是很难找到解决办法,其实最根本的解决办法还是跟换path中的jdk版本,我用1.8打包不成功,matlab是2014的,可能不支持最新的1.8.换成1.7就能成功了!