java - 我们如何在 Android 的 Jvdroid IDE 上使用 Abstract Widget Toolkit(AWT)/Swing
问题描述
我在 android 上使用 jvdroid IDE,它在很大程度上准确地编译和执行 Java 代码。但是,我想使用此 IDE 创建使用图形用户界面 (GUI) 的 Java 应用程序。如何使用 swing 或 awt 来完成此任务?
到目前为止,我已经尝试使用 AWT,使用以下代码:
import java.awt.* ;
public class Main {
public static void main(String[] args){
Frame f = new Frame() ;
f.setVisible(true) ;
}
}
保存并执行后,我得到以下输出:
Exception in thread "main" java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
at java.desktop/java.awt.GraphicsEnvironment.checkHeadless(Unknown Source)
at java.desktop/java.awt.Window.<init>(Unknown Source)
at java.desktop/java.awt.Frame.<init>(Unknown Source)
at java.desktop/java.awt.Frame.<init>(Unknown Source)
at Main.main(Main.java:5)
解决方案
Swing 产生与您的 awt 编译相同的错误,预期:
~/Git/java $ java -cp ./swingx-1.6.jar:. HelloWorldSwing
Exception in thread "AWT-EventQueue-0" java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
at java.desktop/java.awt.GraphicsEnvironment.checkHeadless(Unknown Source)
at java.desktop/java.awt.Window.<init>(Unknown Source)
at java.desktop/java.awt.Frame.<init>(Unknown Source)
at java.desktop/javax.swing.JFrame.<init>(Unknown Source)
at HelloWorldSwing.createAndShowGUI(HelloWorldSwing.java:11)
at HelloWorldSwing$1.run(HelloWorldSwing.java:28)
at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
~/Git/java $
然后,swt 产生它自己的错误。但在很大程度上,swt 错误表明图形显示(gimp 工具包或 gtk)功能在java for android中不可用:
~/Git/Java $ javac -cp ./swt2.jar:. HelloWorldSWT.java
~/Git/Java $ java -cp ./swt2.jar:. HelloWorldSWT
Exception in thread "main" java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons:
no swt-gtk-4946r21 in java.library.path: [/data/data/ru.iiec.jvdroid/files/lib/server, /data/data/ru.iiec.jvdroid/files/lib, /data/data/ru.iiec.jvdroid/files/../lib, /data/user/0/ru.iiec.jvdroid/files/lib, /data/user/0/ru.iiec.jvdroid/files/lib/jli, /data/user/0/ru.iiec.jvdroid/files/lib/server, /usr/java/packages/lib, /lib, /usr/lib]
no swt-gtk in java.library.path: [/data/data/ru.iiec.jvdroid/files/lib/server, /data/data/ru.iiec.jvdroid/files/lib, /data/data/ru.iiec.jvdroid/files/../lib, /data/user/0/ru.iiec.jvdroid/files/lib, /data/user/0/ru.iiec.jvdroid/files/lib/jli, /data/user/0/ru.iiec.jvdroid/files/lib/server, /usr/java/packages/lib, /lib, /usr/lib]
no swt in java.library.path: [/data/data/ru.iiec.jvdroid/files/lib/server, /data/data/ru.iiec.jvdroid/files/lib, /data/data/ru.iiec.jvdroid/files/../lib, /data/user/0/ru.iiec.jvdroid/files/lib, /data/user/0/ru.iiec.jvdroid/files/lib/jli, /data/user/0/ru.iiec.jvdroid/files/lib/server, /usr/java/packages/lib, /lib, /usr/lib]
Can't load library: /data/user/0/ru.iiec.jvdroid/app_HOME/.swt/lib/linux/aarch64/libswt-gtk-4946r21.so
Can't load library: /data/user/0/ru.iiec.jvdroid/app_HOME/.swt/lib/linux/aarch64/libswt-gtk.so
Can't load library: /data/user/0/ru.iiec.jvdroid/app_HOME/.swt/lib/linux/aarch64/libswt.so
/data/data/ru.iiec.jvdroid/app_HOME/.swt/lib/linux/aarch64/libswt-gtk-4946r21.so: dlopen failed: library "libc.so.6" not found
at org.eclipse.swt.internal.Library.loadLibrary(Library.java:348)
at org.eclipse.swt.internal.Library.loadLibrary(Library.java:257)
at org.eclipse.swt.internal.C.<clinit>(C.java:19)
at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:209)
at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:155)
at org.eclipse.swt.widgets.Display.<clinit>(Display.java:165)
at HelloWorldSWT.main(HelloWorldSWT.java:6)
~/Git/Java $
推荐阅读
- angular5 - 角度为 5 的 aws-sdk sendemail。请求的资源上不存在“Access-Control-Allow-Origin”标头
- kotlin - 类型不匹配:推断类型为 String 但应为 Int
- c# - 我正在尝试为私有方法创建单元测试
- java - JRadioButton 无法转换为 ButtonModel
- c# - XDocument 加载多个 XML
- javascript - 匹配最小可能组的正则表达式
- php - 每个逗号内的php文本解析
- ruby-on-rails - 不使用 SimpleForm 加载的默认包装器
- arrays - 如何将 * 和空格放在 Bash 数组中?
- prolog - Prolog 中的递归定义