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 メソッドを呼び出していないことだと思います。