如果主机只有MATLAB运行时,Java可以使用MATLAB方法吗

如果主机只有MATLAB运行时,Java可以使用MATLAB方法吗,java,matlab,java-8,matlab-deployment,matlab-java,Java,Matlab,Java 8,Matlab Deployment,Matlab Java,我试图通过Java调用MATLAB的一些函数 我在本地机器上拥有的是MATLAB运行时(64位)和Java8 64位 下面的代码给出了一个错误 代码 //Start MATLAB asynchronously Future<MatlabEngine> eng = MatlabEngine.startMatlabAsync(); // Get engine instance from the future result MatlabEngine ml = eng.get(); 如果

我试图通过Java调用MATLAB的一些函数

我在本地机器上拥有的是MATLAB运行时(64位)和Java8 64位

下面的代码给出了一个错误

代码

//Start MATLAB asynchronously
Future<MatlabEngine> eng = MatlabEngine.startMatlabAsync();

// Get engine instance from the future result
MatlabEngine ml = eng.get();
如果我错了,请纠正我,但就我的理解而言,这并不需要一个成熟的MATLAB来运行,即使只安装了MATLAB运行时,这也应该运行


那么,如果我的理解是正确的,为什么会出现这种异常呢?

不,这是不可能的。如果是这样的话,您就可以编写自己的MATLAB版本,可以访问所有MATLAB功能,而无需购买MATLAB


--Phil Goddard(来自评论)

如果要立即获得结果,为什么要使用异步启动?您只需调用
MatlabEngine.startMatlab()
,就可以避免使用future。See在这两种情况下都不起作用。根据个人经验,我有一种感觉,MATLAB运行时仅用于运行在MATLAB中编译的应用程序,不能用于执行任意代码,无论是通过java还是其他方式。另请参见。但这是否会导致MATLAB引擎启动出现问题?不,这是不可能的。如果是这样的话,您就可以编写自己的MATLAB版本,可以访问所有MATLAB功能,而无需购买MATLAB。
com.mathworks.engine.EngineException: Unable to launch MATLAB or connect a shared MATLAB session.
    at com.mathworks.engine.FutureMatlab.get(FutureMatlab.java:54)
    at com.mathworks.engine.FutureMatlab.get(FutureMatlab.java:16)
    at com.poc.EngineConsoleDemo.main(EngineConsoleDemo.java:26)