1.java调用matlab,matlab在打印的时候,一直打印到五千多零六的时候,就停止了,不报任何的错误,java无法获取,在执行的时候,总会以程序异常终止为由,停止工作。
test.m文件内容(这个只是用来测试)
function test()
run_times = 200000; %定义运行多少次
for i = 1:1:run_times
pause(0.05);
disp(['run', num2str(i), 'times']);
end
end
java方法
public String testLinuxMatlabExecute(){
//获取matlab代理
File file = new File("/home/ml/matlab");//知道m文件的路基,可以任意
MatlabProxyFactoryOptions options = new MatlabProxyFactoryOptions.Builder()
.setProxyTimeout(300000L)
.setMatlabStartingDirectory(file)//设置MATLAB的开始目录。
.setLogFile("/home/ml/matlab/matlabLog.log")
.setHidden(false)
.build();
MatlabProxyFactory factory = new MatlabProxyFactory(options);
MatlabProxy proxy = null;
try {
proxy = factory.getProxy();
} catch (MatlabConnectionException e) {
e.printStackTrace();
}
//通过代理执行mtalab函数
JSONObject json = new JSONObject();
try {
//通过代理执行mtalab函数
// Object[] result = proxy.returningFeval("test",1, x, y);//调用sumOne.m函数,传入input参数,
proxy.eval("test");
System.out.println("成功:************************");
proxy.exit();//断开与matlab的连接
} catch (MatlabInvocationException e) {
e.printStackTrace();
}
return json.toString();
}
然后通过修改java代码:
MatlabProxyFactoryOptions options = new MatlabProxyFactoryOptions.Builder()
.setProxyTimeout(300000L)
.setUsePreviouslyControlledSession(true)
.setMatlabStartingDirectory(file)//设置MATLAB的开始目录。
.setLogFile("/home/ml/matlab/matlabLog.log")
.setHidden(true)
.build();
通过接口访问这个调用matlab程序。就会一直打印日志,之前只有打印到五千多,就停止了: