Bonsoir la team,

je viens vers vous ce soir, car cela fait des jours que j'essaie de trouver une solution pour démarrer sans succès une application Swing depuis un serveur Tomcat sous Linux, en particulier sous CentOs7. Le serveur Linux est un serveur configuré avec une configuration minimum, sans environnement graphique.
La même installation Tomcat fonctionne pourtant sous Windows.

Voici la trace de l'erreur que j'obtiens au démarrage de mon application :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
2018-12-30 20:54:35,430 ERROR [Webswing Process Handler] (SwingProcessImpl.java:281) [cs9a2d7cfb79713D Report] Exception in thread "main" java.awt.AWTError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
2018-12-30 20:54:35,431 ERROR [Webswing Process Handler] (SwingProcessImpl.java:281) [cs9a2d7cfb79713D Report]       at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
2018-12-30 20:54:35,431 ERROR [Webswing Process Handler] (SwingProcessImpl.java:281) [cs9a2d7cfb79713D Report]       at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:65)
2018-12-30 20:54:35,431 ERROR [Webswing Process Handler] (SwingProcessImpl.java:281) [cs9a2d7cfb79713D Report]       at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:115)
2018-12-30 20:54:35,431 ERROR [Webswing Process Handler] (SwingProcessImpl.java:281) [cs9a2d7cfb79713D Report]       at java.security.AccessController.doPrivileged(Native Method)
2018-12-30 20:54:35,431 ERROR [Webswing Process Handler] (SwingProcessImpl.java:281) [cs9a2d7cfb79713D Report]       at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:74)
2018-12-30 20:54:35,431 ERROR [Webswing Process Handler] (SwingProcessImpl.java:281) [cs9a2d7cfb79713D Report]       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2018-12-30 20:54:35,431 ERROR [Webswing Process Handler] (SwingProcessImpl.java:281) [cs9a2d7cfb79713D Report]       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2018-12-30 20:54:35,435 ERROR [Webswing Process Handler] (SwingProcessImpl.java:281) [cs9a2d7cfb79713D Report]       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2018-12-30 20:54:35,435 ERROR [Webswing Process Handler] (SwingProcessImpl.java:281) [cs9a2d7cfb79713D Report]       at java.lang.reflect.Method.invoke(Method.java:498)
2018-12-30 20:54:35,435 ERROR [Webswing Process Handler] (SwingProcessImpl.java:281) [cs9a2d7cfb79713D Report]       at org.webswing.toolkit.WebToolkit.init(WebToolkit.java:132)
2018-12-30 20:54:35,435 ERROR [Webswing Process Handler] (SwingProcessImpl.java:281) [cs9a2d7cfb79713D Report]       at main.Main.initializeExtLibServices(Main.java:120)
2018-12-30 20:54:35,436 ERROR [Webswing Process Handler] (SwingProcessImpl.java:281) [cs9a2d7cfb79713D Report]       at main.Main.main(Main.java:50)
J'ai essayé toutes le solutions imaginables, mais je commencer à être à cours d'idées les amis ...

Je peux vous exposer les différentes pistes que j'ai essayées si cela vous intéresse.

Voici une bonne piste à exploiter je pense :
- j'ai configuré serveur X sur Linux (côté serveur) et également sur Windows (côté client).
Lorsque je me connecte en SSH -X (X : option d'activation de transit des données via Putty) depuis mon poste Windows et que je lance mon application côté serveur Linux via : "java -jar <mon_appli>.jar" (dans mon serveur Tomcat), les données binaires sont envoyées depuis Linux vers Windows et grâce à X serveur mon application lancée depuis Linux s'affiche sur mon poste Windows.

La variable "DISPLAY" sous Linux présente dans la stack d'erreur vaut pourtant : "localhost:10.0" (en faisant "echo $DISPLAY").

Pourquoi vaut-elle ":0.0" sous Tomcat ? Que dois-je configurer ?
J'ai essayé de rajouter le paramètre "-Djava.awt.headless=true" à la JVM comme préciser ici : https://community.pivotal.io/s/artic...Tomcat-2010240, mais rien y fait ...

Je commence à baisser les bras, si quelqu'un pouvait me donner une petite piste les amis ...

Bernard.