【问题标题】:Java GUI in Matlab2011a and 64bit Win7Matlab2011a 和 64 位 Win7 中的 Java GUI
【发布时间】:2012-07-13 13:19:27
【问题描述】:

今年早些时候,我编写了 Java GUI 以在 Matlab 环境中工作以获取图像。我能够在 matlab 中调用 Java_Gui.jar,以及使用 .jar 文件中的一些类。该图形用户界面在 WinXP 32 位、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 文件? 代码还在32bit Win上运行,刚查了一下。

回答:在 64 位 Windows 7 上使用 32 位版本的 Matlab!

【问题讨论】:

    标签: java matlab user-interface data-acquisition


    【解决方案1】:

    您的 JAR 可能使用 JNI。

    JNI 将无法加载到与包含本机部分的 DLL 不同位数的进程中。在这种情况下,您需要 64 位版本的库(Java 代码没有什么不同,本机 DLL 是)。

    【讨论】:

    • 你是对的。 Matlab 中出现以下错误:D:\Matlab2011_full\sys\java\jre\win64\jre\bin\sserial.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform。但是,对我来说奇怪的是,Matlab 之外的 JavaGUI 可以使用相同的 dll 正常工作。
    • @Makaroni:这取决于进程的位数,而不是 Windows 的位数。所以你可能有一个 32 位应用程序工作正常,而 64 位 Matlab 失败。 (而且我的 32 位学生版 MatLab 也可以正常加载,即使在 64 位 Windows 上也是如此)。
    【解决方案2】:

    问题是您在 java 中使用了一个库来调用本地库,您需要 64 位版本才能在 64 位 JRE 中运行它。您需要切换到 32 位版本的 Matlab,或者追踪对 sserial 进行本机调用的库并更新到 64 位版本的 64 位系统。

    【讨论】:

    • 如果我没有来自 sserial 的库?有没有其他解决办法。附言请在下面查看我的评论。
    • 也就是说,问题出在我的 32bit sserial dll 文件上?
    • 是的,你要么需要一个 32 位 JRE(Matlab 有它自己的 JRE 封装在里面,这就是为什么你可以在 Matlab 之外运行良好)或一个 64 位 dll
    • 好的,我会尝试在我的 64 位 Win7 上安装 32 位 Matlab。希望它会奏效!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 2013-03-24
    • 1970-01-01
    相关资源
    最近更新 更多