从java调用时未定义的变量“modem”或类“modem.pskmod”

时间:2010-01-20 15:03:36

标签: java matlab matlab-deployment matlab-compiler

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

        public void run() {
            try {

                new main();
            } catch (Exception p) {
            }
        }
    });
}  

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