繁体   English   中英

从 java、java.lang.UnsatisfiedLinkError 调用 matlab

[英]Calling matlab from java, java.lang.UnsatisfiedLinkError

我正在尝试从 java(在 Eclipse 中开发)中调用 matlab function。 I can get it to run just fine with R2019b, but when I change the java build path to R2019a (engine.jar - C:\Program Files\MATLAB\R2019a\extern\engines\java\jar), I get an error:

Caused by: java.lang.UnsatisfiedLinkError: com.mathworks.mvm.MvmFactory.nativeSetJavaEngine(Z)V
    at com.mathworks.mvm.MvmFactory.nativeSetJavaEngine(Native Method)
    at com.mathworks.mvm.MvmImpl.setJavaEngineMode(MvmImpl.java:203)
    at com.mathworks.engine.MatlabEngine.<clinit>(MatlabEngine.java:69)
    at MyController.onRunSimClick(MyController.java:190)
    ... 62 more

我已将 C:\Program Files\MATLAB\R2019b\bin\win64 和 C:\Program Files\MATLAB\R2019a\bin\win64 添加到我的 PATH 变量中。

堆栈跟踪的开始是:

java.lang.NoSuchMethodError: Method com.mathworks.mvm.MvmFactory.nativeCreateFactory(IIZ[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)J not found

我很乐意提供 rest,但不想造成混乱。 提前致谢!

我还不能发表评论,所以把这个作为答案。 您可能想要做的第一件事是运行:

java -XshowSettings:properties -version

看看你的 java.library.path 是什么。

我找到了一种解决方法,我可以从命令行编译和运行我的代码。 我必须添加 C:\Program Files\MATLAB\R2019a\bin\win64; 在任何其他 matlab 版本之前到我的路径。 然后,根据 matlab 文档,我可以这样做:

> javac -classpath matlabroot\extern\engines\java\jar\engine.jar MyJavaCode.java
> java -classpath .;matlabroot\extern\engines\java\jar\engine.jar MyJavaCode

我仍然不确定为什么这在 Eclipse 中不起作用,但这种解决方法将在短期内起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM