2017-09-25 3 views
0

J'ai exécuté WSL depuis peu de temps, et j'ai essayé de compiler et téléchargez des scripts Arduino via cette console.Exception dans le thread "AWT-EventQueue-0" java.awt.HeadlessException lors de l'exécution d'arduino sur bash (via le sous-système Windows de Linux)

J'ai installé arduino en exécutant sudo apt install arduino mais à partir de là chaque fois que j'exécuter toute commande arduino (même simplement arduino) j'obtenir l'exception suivante

J'ai essayé d'installer Linux Arduino IDE via cette ligne de commande, mais n'a eu aucun effet . Mon hypothèse est qu'il s'agit d'un problème provenant de WSL et arduino n'étant pas conçu pour cet environnement

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 

Répondre

0

Vous avez raison. Le sous-système Windows Linux est uniquement destiné aux applications en ligne de commande et non aux applications graphiques.

Une alternative relativement simple est d'obtenir VirtualBox ou QEmu pour Windows et démarrer/installer une petite distribution Linux.

Si c'est seulement l'Arduino IDE que vous souhaitez exécuter alors vous n'avez pas besoin que ce soit parce qu'il est également disponible pour Windows:
https://www.arduino.cc/en/Main/Software

0

L'Arduino IDE est typiquement utilisé comme une interface graphique, qui est pas pris en charge par votre WLS, d'où le message d'erreur:

No X11 DISPLAY variable was set, but this program performed an operation which requires it. 

Cependant, le fonctionnement de la ligne de commande de l'Arduino IDE a été ajouté dans Arduino IDE 1.5.2, ce qui ne permet de nombreuses opérations à faire à partir de la console (voir https://github.com/arduino/Arduino/blob/master/build/shared/manpage.adoc). À l'origine, cela vous obligeait à exécuter un tampon de trame virtuelle, mais ce n'est plus nécessaire avec les dernières versions de l'IDE Arduino.

J'ai installé arduino en exécutant sudo apt install arduino

Lorsque vous faites cela, vous obtenez une très obsolète et peut-être la version non standard de l'IDE Arduino qui ne supporte pas l'utilisation de la ligne de commande. En raison de la documentation de licence issues, il n'a pas été possible de mettre à jour la version de l'IDE Arduino disponible via les gestionnaires de paquets. Vous devez toujours installer l'IDE Arduino en téléchargeant la dernière version de https://www.arduino.cc/en/Main/Software. Une fois que vous avez fait cela, vous serez en mesure d'utiliser la fonction de ligne de commande.