在线程“AWT-EventQueue-0”中的异常java.awt.HeadlessException在bash上运行arduino(通过Linux的Windows子系统)
我一直在短时间内运行WSL,并且一直在尝试编译并通过这个控制台上传Arduino脚本。在线程“AWT-EventQueue-0”中的异常java.awt.HeadlessException在bash上运行arduino(通过Linux的Windows子系统)
我通过运行sudo apt install arduino
安装Arduino的,但在那里,每当我运行任何Arduino的命令(甚至根本arduino
)我得到下面的异常
我试图通过这个命令行安装Linux的Arduino IDE,但都没有效果。我的假设是这是一个问题源于WSL和arduino不是为那个环境设计的
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.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:204)
at java.awt.Window.<init>(Window.java:536)
at java.awt.Frame.<init>(Frame.java:420)
at java.awt.Frame.<init>(Frame.java:385)
at javax.swing.JFrame.<init>(JFrame.java:189)
at arduinopc.<init>(arduinopc.java:35)
at arduinopc$3.run(arduinopc.java:85)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Exception in thread "main" java.lang.ExceptionInInitializerError
at processing.app.Preferences.setColor(Preferences.java:851)
at processing.app.Preferences.init(Preferences.java:273)
at processing.app.Base.main(Base.java:117)
Caused by: java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
at sun.awt.HeadlessToolkit.getMenuShortcutKeyMask(HeadlessToolkit.java:236)
at processing.core.PApplet.<clinit>(Unknown Source)
... 3 more
你是对的。 Windows Linux子系统仅适用于不用于运行GUI应用程序的命令行应用程序。
相对简单的替代方法是获取Windows的VirtualBox或QEmu并启动/安装一个小型Linux发行版。
如果要运行,那么你不需要它的唯一的Arduino的IDE,要么因为它也可用于Windows:
https://www.arduino.cc/en/Main/Software
Arduino的IDE是一个典型的用作图形用户界面,其是不是你的WLS支持,因此错误消息:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
然而,在Arduino的IDE 1.5.2,这确实让许多操作,从控制台来完成加入Arduino的IDE的命令行操作(见https://github.com/arduino/Arduino/blob/master/build/shared/manpage.adoc)。最初这需要您运行虚拟帧缓冲区,但在Arduino IDE的最新版本中不再需要。
我通过运行sudo易于安装的Arduino Arduino的安装
当你做,你得到的Arduino IDE不支持命令行使用的一个非常过时和可能的非标版本。由于许可文档issues,无法通过软件包管理器更新Arduino IDE的版本。您应该始终通过从https://www.arduino.cc/en/Main/Software下载最新版本来安装Arduino IDE。一旦你完成了,你将能够使用命令行功能。