Les logiciels Arduino et Processing sont des applications Java Swing. Il faut le savoir et cela a quelques conséquences.
Le problème
Depuis quelques temps je n’arrivais plus à lancer Arduino ou Processing de manière épisodique. C’est-à-dire que lorsque je cliquais sur leur icône, le PC "moulinait" puis rien à l’écran.
Première piste, les JVM
Il existe plusieurs types de machines virtuelles Java pour ces deux logiciels :
– celle qui vient avec le logiciel
– une JRE (runtime) installée sur votre machine
– un JDK (développement) installé sur votre machine
J’avais résolu une première fois le problème en supprimant le répertoire Java dans le répertoire d’installation d’Arduino et/ou de Processing. Mais c’est revenu (après coup, je pense que c’est lorsque j’ai dû installer Flip et les outils pour OpenSCB).
Seconde piste, les applications Swing
Après avoir désinstallé et réinstallé plusieurs fois les différentes versions de Java, tant comme JRE que comme JDK (d’ailleurs Processing exige un JDK), j’ai eu l’idée de lancer un programme Java fourni dans le répertoire demo du JDK. Lui non plus ne se lance pas et j’obtiens cette erreur :
Exception in thread "main" java.lang.ExceptionInInitializerError
at javax.swing.JPanel.updateUI(Unknown Source)
at javax.swing.JPanel.<init>(Unknown Source)
at javax.swing.JPanel.<init>(Unknown Source)
at javax.swing.JPanel.<init>(Unknown Source)
at javax.swing.JRootPane.createGlassPane(Unknown Source)
at javax.swing.JRootPane.<init>(Unknown Source)
at javax.swing.JFrame.createRootPane(Unknown Source)
at javax.swing.JFrame.frameInit(Unknown Source)
at javax.swing.JFrame.<init>(Unknown Source)
at Stylepad.main(Stylepad.java:81)
Caused by: java.lang.IllegalArgumentException: 0 incompatible with Text-specific LCD contrast key
at java.awt.RenderingHints.put(Unknown Source)
at sun.awt.windows.WDesktopProperties.getDesktopAAHints(Unknown Source)
at sun.awt.windows.WToolkit.getDesktopAAHints(Unknown Source)
at sun.awt.SunToolkit.getDesktopFontHints(Unknown Source)
at sun.awt.windows.WDesktopProperties.getProperties(Unknown Source)
at sun.awt.windows.WToolkit.updateProperties(Unknown Source)
at sun.awt.windows.WToolkit.lazilyInitWProps(Unknown Source)
at sun.awt.windows.WToolkit.lazilyLoadDesktopProperty(Unknown Source)
at java.awt.Toolkit.getDesktopProperty(Unknown Source)
at javax.swing.UIManager.<clinit>(Unknown Source)
... 10 more
Et c’est grâce au Site du Zero que j’ai trouvé la solution.
Le fautif : ClearType
Je n’ai aucune idée de l’origine de ce petit logiciel. Sans doute une mise à jour ou bien l’installation d’un autre logiciel (un jeu vidéo ?). Toujours est-il que Microsoft propose un outil appelé "ClearType Tuner PowerToy" ici qui adoucit le contour des polices de caractères.
C’est vrai, ça marche :
Mais par contre, ça provoque cette erreur sur les applications Swing lorsque l’écran ou la carte graphique (j’imagine) ne supporte pas complètement cette fonctionnalité.
Donc lancez le logiciel ClearType disponible dans le panneau de configuration et désactivez l’option ClearType. C’est sûr qu’on a un peu mal aux yeux pendant quelques minutes, si on s’était habitué à de beaux caractères bien formés.
Mais au moins le problème est résolu et on peut enfin recommencer les développements (surtout que j’en connais un qui attend...).