web-dev-qa-db-fra.com

Ouvrez le programme Java de SSH vers l'affichage VNC

Si j'ai un système Ubuntu 12.04 sur lequel LXDE et TightVNCserver sont installés et que je lance une session sur le port :1 (non tunnelé via SSH) et une connexion SSH active, comment puis-je utiliser SSH pour démarrer un programme nécessitant une connexion active afficher pour utiliser la session tightVNC disponible?

Je voulais utiliser SSH pour démarrer un fichier Java qui démarre normalement lorsqu'il est lancé à l'intérieur de la session vnc, mais j'obtiens une erreur:

xxx@yyy:~# Java zzz
Exception in thread "main" Java.lang.ExceptionInInitializerError
Caused by: Java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
        at Sun.awt.HeadlessToolkit.getScreenSize(HeadlessToolkit.Java:282)
        at zzz.<clinit>(zzz.Java:35)

Pour le reformuler: je veux démarrer un programme et le laisser utiliser la fenêtre de la session ouverte VNC sans utiliser la session de visualisation du client VNC pour le démarrer, est-ce possible?

(Je pense que tout programme nécessitant un affichage réagirait de cette façon, donc je pense que ce n'est pas tellement une question Java mais une question ssh/vnc)

1
N_Dev

Essayez de définir la variable DISPLAY sur le serveur X de la session VNC:

DISPLAY=:1 Java xxx
2
muru

Vous devrez activer le transfert X11 pour le transférer sur votre propre serveur X11 (vous avez donc besoin d'un serveur X11 en cours d'exécution sur le client à partir duquel vous utilisez SSHing).

Cela peut être fait en ajoutant -X à votre commande SSH. Exemple: ssh -X user@server

Assurez-vous ensuite que la variable $ DISPLAY est définie sur le bon affichage. Vérifiez ceci avec echo $DISPLAY

Si ce que vous essayez d'atteindre consiste à accéder à une fenêtre ouverte sur votre serveur X11 via SSH, je vous suggère de jeter un coup d'œil à ceci: http://www.wensley.org.uk/x =

Il explique comment obtenir un comportement similaire à 'screen', mais avec les applications X11.

2
Tobias