查看单个帖子
旧 2019-12-10, 20:30   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 从Java调用时未定义的变量“ modem”或类“ modem.pskmod”

我已经在Matlab中编写了代码,用于调制和解调一些信号。我使用deploytool部署它们, .jar在没有GUI的一个应用程序中工作,但是给了我Undefined variable "modem" or class "modem.pskmod".在带有GUI的应用程序中。

基本上,我想知道什么会导致此错误发生,因为我环顾四周,但找不到有关此错误的大量文档。

我不明白为什么它在一个应用程序中起作用,但在调用该方法时使用的代码几乎相似时却在另一个应用程序中失败。



回答:

好的,经过大量测试并比较了没有GUI的应用程序和具有GUI的应用程序之间的区别。我找到了解决问题的方法。

作为没有GUI运行的应用程序,从应用程序开始运行init方法(只有一个线程)
import matlabFunction.*;
public static void main(String[] args) {
matlabFunction test = new matlabFunction(); test.runFunction(1, lstABC.toArray());
}

但是在带有GUI的代码中,我从EDT内的JFrame(main()包含我的初始化代码)中运行init方法

public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() {

public void run() { try { new main(); } catch (Exception p) { } } }); } 上面提到的初始化matlab方法的方式会发生错误。但是,如果我按如下方式更改调用init方法的方式,则错误将解决。

public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() {

public void run() { try { matlabFunction test = new matlabFunction(); new main(test); } catch (Exception p) { } } }); }

因此,我相信我的问题的原因不是从启动应用程序的“第一个”线程中调用init方法。



更多&回答...
poster 当前离线   回复时引用此帖