今年早些时候,我将Java GUI编写为在Matlab环境中工作以进行图像采集。我能够在matlab中调用Java_Gui.jar,以及使用.jar文件中的一些类。 GUI在WinXP 32bit,Matlab2006b和Matlab 2008a上进行了测试。用于调用Java类的Matlab代码:
clc,clear all,close all
javaaddpath('C:\Users\...\JavaGUI.jar');
JavaGUI.main([]);
pause(1)
JavaGUI.main2();
然而,当在64位和Matlab2011a上使用Win7尝试相同的程序时,出现了熟悉的问题:
??? Java exception occurred:
java.lang.UnsatisfiedLinkError: no sserial in java.library.path
知道为什么会这样吗?也许我应该在64位版本上编译我的jar文件? 代码仍在使用32位Win,只需检查它。
解答:在64位Windows 7上使用32位版本的Matlab!
答案 0 :(得分:2)
可能你的JAR使用JNI。
JNI将无法加载到与包含本机部分的DLL不同位的进程中。在这种情况下,你需要一个64位版本的库(Java代码没有区别,原生DLL是)。
答案 1 :(得分:2)
问题是你在java中使用一个库来调用你需要64位版本的本机库,以便在64位JRE中运行它。您需要切换到32位版本的Matlab,或者跟踪对sserial进行本机调用的库,并更新为64位版本的64位版本。