0

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

基本上,当我环顾四周时,我想知道什么会导致这个错误发生,我没有找到太多关于这个错误的文档。

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

4

1 回答 1

0

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

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

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

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 方法。

于 2010-01-22T16:15:25.173 回答