问题描述
我制作了一个 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 计算?
解决方法
访问“实例”的未初始化值(可能是因为线程)存在问题,其中“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!");
// }