0

いくつかの信号を変調および復調するコードを matlab で作成しました。deploytool私はそれらを使用してデプロイし.jar、GUI を使用しない 1 つのアプリケーションで動作しUndefined variable "modem" or class "modem.pskmod".ますが、GUI を使用するアプリケーションでは動作します。

基本的に、このエラーが発生する原因を知りたいのですが、見回すと、このエラーに関するドキュメントはあまり見つかりません。

メソッドを呼び出すときに使用するコードがほぼ似ている場合、あるアプリケーションでは機能するのに別のアプリケーションでは失敗する理由がわかりません。

4

1 に答える 1

0

OK、多くのテストと、GUI を使用しないアプリケーションと GUI を使用するアプリケーションの違いを比較した結果です。問題の解決策を見つけました。

GUI のないアプリケーションとして、アプリケーションの開始からメソッドを init します (スレッドは 1 つだけです)。
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 メソッドを呼び出していないことだと思います。

于 2010-01-22T16:15:25.173 に答える