从 java、java.lang.UnsatisfiedLinkError 调用 matlab
Calling matlab from java, java.lang.UnsatisfiedLinkError
我正在尝试调用我从 java(在 Eclipse 中开发)获得的 matlab 函数。我可以使用 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
我很乐意提供其余部分,但不想造成混乱。提前致谢!
我还不能评论,所以把这个作为答案。您可能想要做的第一件事是 运行:
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 中不起作用,但这种解决方法短期内会起作用。
我正在尝试调用我从 java(在 Eclipse 中开发)获得的 matlab 函数。我可以使用 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
我很乐意提供其余部分,但不想造成混乱。提前致谢!
我还不能评论,所以把这个作为答案。您可能想要做的第一件事是 运行:
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 中不起作用,但这种解决方法短期内会起作用。