2010-01-20 42 views
0

我寫了一個代碼在matlab中調製和解調一些信號。我使用deploytool.jar在沒有GUI的一個應用程序中部署它們,但是在具有GUI的應用程序中給出了Undefined variable "modem" or class "modem.pskmod".從java調用未定義變量「調制解調器」或類「modem.pskmod」

基本上,我想知道什麼會導致這個錯誤發生,因爲我環顧四周,我沒有找到這個錯誤的文檔。

因爲我不明白爲什麼它在一個應用程序中工作,但在另一個應用程序中失敗時,我調用該方法時使用的代碼幾乎相似。

+0

只是澄清......你有一個調用函數'modem.pskmod'的應用程序,*不使用GUI,並且工作正常。然後你有另一個應用程序,也調用函數'modem.pskmod',*使用圖形用戶界面,並不起作用(給你上述錯誤)。它是否正確? – gnovice 2010-01-20 18:28:55

+0

是的,你是對的。 – 2010-01-21 02:29:49

回答

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()包含我的init代碼)這是在EDT內部

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