Java中的MATLAB函数导致运行时错误(异常\访问\冲突)
我使用的是MatlabEngineAPI for Java,到目前为止,eval和feval函数等基础函数都可以正常工作。我甚至用这些画了一个柱状图。但是PutVariable方法导致我有异常访问冲突 代码是:Java中的MATLAB函数导致运行时错误(异常\访问\冲突),java,matlab,exception,runtime-error,access-violation,Java,Matlab,Exception,Runtime Error,Access Violation,我使用的是MatlabEngineAPI for Java,到目前为止,eval和feval函数等基础函数都可以正常工作。我甚至用这些画了一个柱状图。但是PutVariable方法导致我有异常访问冲突 代码是: package connecter; import java.util.*; import java.util.concurrent.ExecutionException; import com.mathworks.engine.*; public class MainClas
package connecter;
import java.util.*;
import java.util.concurrent.ExecutionException;
import com.mathworks.engine.*;
public class MainClass {
public static void main(String[] args) throws IllegalArgumentException, IllegalStateException, InterruptedException, MatlabExecutionException, MatlabSyntaxException, ExecutionException {
MatlabEngine matEng = MatlabEngine.startMatlab();
matEng.putVariable("x", 3.0);
}
Console为我提供了以下信息:
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000001b224d20b95, pid=1904, tid=8768
#
# JRE version: Java(TM) SE Runtime Environment (12.0.2+10) (build 12.0.2+10)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (12.0.2+10, mixed mode, sharing, tiered, compressed oops, g1 gc, windows-amd64)
# Problematic frame:
# v ~StubRoutines::atomic_add_long
#
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# [Filepath]\hs_err_pid1904.log
Could not load hsdis-amd64.dll; library not loadable; PrintAssembly is disabled
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
#
到目前为止,我已经搜索了无数条线索,但到目前为止没有任何结果。我使用的是JavaSE-12,MATLAB是R2019b。你做得对。这是Matlab、JDK或两者中的一个bug。你在这里做不了什么。联系MathWorks支持人员和JDK供应商,让他们知道发生了什么,并与您的IT部门沟通,看看您是否有一个奇怪的机器配置可能会把他们搞砸
并尝试在不同的JDK上运行,比如JDK8等低很多的主要版本。Matlab使用旧的JDK版本,因此它更容易被测试并与之对抗。哇,这实际上看起来像是JDK中的一个bug!尝试不同版本的JDK。MathWorks倾向于使用更旧版本的Java,因此他们可能没有用较新版本的Java对其进行广泛的测试。还要检查Matlab文档,确保您使用的Java版本受Matlab Java引擎支持。类似的问题,可能是您的AV:除此之外,我会就此联系Mathworks支持部门,并将hs_err_pid1904.log转发给他们。Yep。您的Matlab或JDK中的某些内容是FUBARed。这不是你可以直接自己解决的问题。是时候为其中一个或两个呼叫支持了。