Неопределенная переменная “modem” или класс “modem.pskmod” при вызове из java
-
21-09-2019 - |
Вопрос
Я написал код в matlab, который модулирует и демодулирует некоторые сигналы.Я развертываю их с помощью deploytool
и тот .jar
работает в одном приложении без графического интерфейса, но дает мне Undefined variable "modem" or class "modem.pskmod".
в приложении с графическим интерфейсом.
В принципе, то, что я хочу знать, что вызовет возникновение этой ошибки, поскольку я осмотрелся, я не нашел много документации по этой ошибке.
Поскольку я не понимаю, почему это работает в одном приложении, но терпит неудачу в другом, когда код, который я использую, почти аналогичен при вызове метода.
Решение
Хорошо, после долгого тестирования и сравнения разницы между приложением БЕЗ графического интерфейса и приложением С графическим интерфейсом.Я нашел решение своей проблемы.
Как приложение без графического интерфейса, запустите init метод с самого начала приложения (существует только один поток)
import matlabFunction.*;
public static void main(String[] args) {
matlabFunction test = new matlabFunction();
test.runFunction(1, lstABC.toArray());
}
Но в моем коде с графическим интерфейсом я запускаю метод init из JFrame (main() содержит мой код инициализации), который находится внутри 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 из "первого" потока, который запускает приложение.