![](/img/trans.png)
[英]Exception in thread “AWT-EventQueue-0” java.awt.HeadlessException
[英]Exception in thread “AWT-EventQueue-0” java.awt.HeadlessException when running arduino on bash (via Windows subsystem of Linux)
我已經運行WSL了很短的時間,並且一直在嘗試通過此控制台編譯和上傳Arduino腳本。
我通過運行sudo apt install 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/zh/Main/軟件
Arduino IDE通常用作GUI,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 apt install arduino安裝了arduino
當您這樣做時,您會得到一個非常過時且可能是非標准版本的Arduino IDE,它不支持命令行用法。 由於許可文檔問題 ,無法通過包管理器更新可用的Arduino IDE的版本。 您應該始終通過從https://www.arduino.cc/zh/Main/Software下載最新版本來安裝Arduino IDE。 完成后,您將可以使用命令行功能。
使用OpenJDK也會發生此異常。 我將Java從OpenJDK更改為Java™,並且該應用程序無例外地運行。
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/jre/bin/java -version
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)
/usr/java/jdk1.8.0_162/jre/bin/java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.