【问题标题】:Calling matlab from java, java.lang.UnsatisfiedLinkError从java调用matlab,java.lang.UnsatisfiedLinkError
【发布时间】:2020-07-24 01:17:58
【问题描述】:

我正在尝试调用我从 java 中获得的 matlab 函数(在 Eclipse 中开发)。我可以让它在 R2019b 上运行得很好,但是当我将 java 构建路径更改为 R2019a (engine.jar - C:\Program Files\MATLAB\R2019a\extern\engines\java\jar) 时,我收到一个错误:

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

我很乐意提供其余部分,但不想造成混乱。提前致谢!

【问题讨论】:

  • 你是如何设置PATH 变量的?我的意思是通过开始菜单中的 Environment Variable 或通过命令提示符控制台。如果是控制台,我建议通过从开始菜单访问环境变量来设置它,然后重试。
  • 我已经在运行/调试设置中从 Eclipse 设置了 PATH,将变量附加到本机环境,并从我机器上的系统级别设置。我还没有从控制台这样做,但我怀疑我不会再有运气了,但值得一试。
  • 我在 Eclipse 中使用 jre 1.8.0_251。在 Matlab R2019a 中,我的 java 版本是 1.8.0_181,在 Matlab R2019b 中,我的 java 版本是 1.8.0_202。我不相信这些应该有任何影响。
  • 请确保您的系统、MATLAB 和 Eclipse 使用与 MATLAB 相同的 Java 版本。
  • 好的,我都用1.8.0_251了,还是一样的错误。

标签: java matlab javafx


【解决方案1】:

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

java -XshowSettings:properties -version

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

【讨论】:

    【解决方案2】:

    我找到了一种解决方法,我可以从命令行编译和运行我的代码。我必须添加 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 中不起作用,但这种解决方法将在短期内起作用。

    【讨论】:

      猜你喜欢
      • 2011-10-22
      • 1970-01-01
      • 2015-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-27
      • 1970-01-01
      相关资源
      最近更新 更多