Хорошо, после большого тестирования и сравнения различий между приложением БЕЗ GUI и приложением С GUI. Я нашел решение своей проблемы.
Как приложение без графического интерфейса, запустите init метод с момента запуска приложения (есть только один поток)
import matlabFunction.*;<br>
public static void main(String[] args) {<br>
matlabFunction test = new matlabFunction();
test.runFunction(1, lstABC.toArray());<br>
}
Но в моем коде с GUI я запускаю метод init из JFrame (main () содержит мой код инициализации), который находится внутри EDT
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {</p>
<pre><code> public void run() {
try {
new main();
} catch (Exception p) {
}
}
});
}
Произошла ошибка при вышеуказанном способе запуска метода matlab. Но если я изменю способ вызова метода init, как показано ниже, ошибка будет решена.
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {</p>
<pre><code> public void run() {
try {
matlabFunction test = new matlabFunction();
new main(test);
} catch (Exception p) {
}
}
});
}
Итак, я считаю, что причиной моей проблемы является не вызов метода init из «первого» потока, запускающего приложение.