【问题标题】:My Java GUI Library working on windows not on Linux [closed]我的 Java GUI 库在不在 Linux 上的 Windows 上工作 [关闭]
【发布时间】:2021-05-15 01:08:28
【问题描述】:

我制作了一个 Java 库来显示 Android 之类的 Toast 消息,称为 JSubs:GitHub

它在我的 Windows 10 电脑上运行良好。

但每当我在 Linux(Kali Linux) 上尝试时,系统就会崩溃,并且消息也无法正确显示。

我的驱动程序代码:

import com.jaysmito.jsubs.JSubsConstants;
import com.jaysmito.jsubs.SubsFrame;
import com.jaysmito.jsubs.Toast;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws Exception{
        Toast.showToast("Hello World!");
    }
}

我对 Linux 没有多少经验。

我怎样才能让它也可以用 Linux 计算?

【问题讨论】:

  • 如果您想要好的答案,我认为您需要提供更多细节,并显示相关代码。
  • @DPWork 好吧,我不想用代码填写问题,因为我已经给出了 github 链接,只是从那里看到它
  • 关于我提供的详细信息,我觉得有必要,如果您需要更多,请询问
  • @JaysmitoMukherjee 他已经要求更多。不要提供 github(或其他)链接,在这里提供一个可以重现问题的最小示例
  • 例如“系统崩溃”。你怎么知道?你收到错误信息吗?哪一个?

标签: java linux windows user-interface platform-independent


【解决方案1】:

访问“实例”的未初始化值(可能是因为线程)存在问题,在“this”中更合适,因为可以保证设置。例如SubsFrame 构造函数调用handleFrameSize() 但handleFrameSize 使用“instance” -> NullPointerException。

Exception in thread "Thread-0" java.lang.NullPointerException: Cannot read field "label" because "com.jaysmito.jsubs.SubsFrame.instance" is null

不应在不同的线程中运行 Swing UI 更改。在主调用线程(第一次设置)或稍后在事件调度线程中执行所有 Swing UI 操作。这会影响您的 new Thread(new Runnable ...) 调用中的所有操作,请使用 SwingUtilities.invokeLater(runnable); 来更改这些后台线程中的 UI。

我可以在 Linux 上运行您的应用程序,一旦在上面修复并注释掉:

 //    if(!this.isAlwaysOnTopSupported()){
 //        throw new Exception("Always on top is not supported!");
 //    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-24
    • 1970-01-01
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    相关资源
    最近更新 更多