Graalvm编译的swt程序运行不了

我有一个swt程序代码为


import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

public class xx {

public static void main (String [] args) {
    Display display = new Display ();
    Shell shell = new Shell(display);
    
    Text helloWorldTest = new Text(shell, SWT.NONE);
    helloWorldTest.setText("Hello World SWT");
    helloWorldTest.pack();
    
    shell.pack();
    shell.open ();
    while (!shell.isDisposed ()) {
        if (!display.readAndDispatch ()) display.sleep ();
    }
    display.dispose ();
}
}

我用graalvm编译它,javac xx.java -cp ./swt.jar 编译成功,然后用native-image构建native-image xx -cp .:./swt.jar也成功
但是我运行它时,却抛出异常,
SWT-JNI: ERROR(1523): Failed to resolve 'java/lang/Throwable'
Exception in thread "main" java.lang.NoSuchMethodError: org.eclipse.swt.widgets.Display.rendererClassInitProc(JJ)J
at org.graalvm.nativeimage.builder/com.oracle.svm.core.jni.functions.JNIFunctions$Support.getMethodID(JNIFunctions.java:1259)
at org.graalvm.nativeimage.builder/com.oracle.svm.core.jni.functions.JNIFunctions$Support.getMethodID(JNIFunctions.java:1244)
at org.graalvm.nativeimage.builder/com.oracle.svm.core.jni.functions.JNIFunctions.GetStaticMethodID(JNIFunctions.java:413)
at org.eclipse.swt.internal.Callback.bind(Callback.java)
at org.eclipse.swt.internal.Callback.(Callback.java:137)
at org.eclipse.swt.internal.Callback.(Callback.java:88)
at org.eclipse.swt.internal.Callback.(Callback.java:66)
at org.eclipse.swt.widgets.Display.createDisplay(Display.java:1188)
at org.eclipse.swt.widgets.Display.create(Display.java:1091)
at org.eclipse.swt.graphics.Device.(Device.java:168)
at org.eclipse.swt.widgets.Display.(Display.java:643)
at org.eclipse.swt.widgets.Display.(Display.java:634)
at xx.main(xx.java:10)

我的graalvm版本为 22.3.0 jdk为17.0.5 os为ubuntu20.04 amd64
我该怎么办?

参考一下呢

运行不了正常的,swt都是基于系统的原生调用,但是基于原生调用需要你额外的配置一些东西,所以建议你打消这个想法

So far it worked out, but only by a lot of manual steps for the json file that contains a list of all Java fields/methods that need to be kept for accessing from swt native libraries.

如果一定要尝试,可以参考下这个帖子
https://bugs.eclipse.org/bugs/show_bug.cgi?id=567958