未定义的变量“调制解调器”或类“modem.pskmod”从 java 调用时

发布于 2024-08-18 04:09:54 字数 304 浏览 9 评论 0原文

我在 matlab 中编写了一段代码,用于调制和解调一些信号。我使用 deploytool 部署它们,并且 .jar 在没有 GUI 的一个应用程序中工作,但给了我未定义的变量“modem”或类“modem.pskmod”。< /code> 在带有 GUI 的应用程序中。

基本上,当我环顾四周时,我想知道什么会导致此错误发生,但我没有找到关于此错误的太多文档。

因为我不明白为什么它在一个应用程序中工作,但在另一个应用程序中失败,因为我在调用该方法时使用的代码几乎相似。

I have written a code in matlab which modulate and demodulate some signals. I deploy them using deploytool and the .jar works in one application without GUI but gives me the Undefined variable "modem" or class "modem.pskmod". in an application with GUI.

Basically, what I want to know what will cause this error to occur as I have look around, I don't find much documentation on this error.

As I don't understand why it work in one application but fails in another when the code I use is almost similar when calling the method.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

稳稳的幸福 2024-08-25 04:09:54

好的,经过大量测试并比较不带 GUI 的应用程序和带 GUI 的应用程序之间的差异。我找到了解决问题的方法。

作为没有 GUI 的应用程序,从应用程序一开始就运行 init 方法(只有一个线程)
<代码>
导入 matlabFunction.*;
公共静态无效主(字符串[]参数){
matlabFunction 测试 = new matlabFunction();
test.runFunction(1, lstABC.toArray());

在我的 GUI 代码中,我从 JFrame 中运行 init 方法(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 方法。

Ok, after much testing and comparing the difference between an application WITHOUT a GUI and an application WITH a GUI. I found a solution to my problem.

As an application without a GUI run init the method from the start of the application (there is only one thread)

import matlabFunction.*;
public static void main(String[] args) {
matlabFunction test = new matlabFunction();
test.runFunction(1, lstABC.toArray());
}

But in my code with GUI I run the init method from within the JFrame (main() contain my init code) which is inside the EDT

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {

        public void run() {
            try {

                new main();
            } catch (Exception p) {
            }
        }
    });
}  

The error occur with the above way to init the matlab method. But if I change way of calling the init method as below, the error is solve.

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {

        public void run() {
            try {
                matlabFunction test = new matlabFunction();
                new main(test);
            } catch (Exception p) {
            }
        }
    });
} 

So, I believe the reason for my problem is not calling the init method from the "first" thread that starts the application.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文