我有一个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
我该怎么办?