Tente definir a variável DISPLAY
para o servidor X da sessão do VNC:
DISPLAY=:1 java xxx
Se eu tiver um sistema Ubuntu 12.04 que tenha LXDE e TightVNCserver instalado e execute uma sessão na porta :1
(não encapsulada através de SSH) e uma conexão SSH ativa, como posso usar o SSH para iniciar um programa que precisa de um exibição ativa para usar a sessão tightVNC disponível?
Eu queria usar o SSH para iniciar um arquivo java que normalmente começa bem quando iniciado dentro da sessão vnc, mas recebo um erro:
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)
Para reformular: quero iniciar um programa e deixá-lo usar a janela da sessão aberta do VNC sem usar a sessão do visualizador de cliente VNC para iniciá-lo, isso pode ser feito?
(Eu acho que qualquer programa que precise de uma tela reagiria dessa forma, então eu acho que não é tanto uma questão de java, mas uma de ssh / vnc)
Tente definir a variável DISPLAY
para o servidor X da sessão do VNC:
DISPLAY=:1 java xxx
Você precisará habilitar o encaminhamento do X11, isto irá encaminhá-lo para o seu próprio servidor X11 (então você precisa de um servidor X11 em execução no cliente do qual você é o SSHing).
Isso pode ser feito adicionando -X
ao seu comando SSH.
Exemplo: ssh -X user@server
Em seguida, verifique se a variável $ DISPLAY está definida para a exibição correta. Verifique isso com echo $DISPLAY
Se o que você está tentando conseguir é acessar uma janela aberta no seu servidor X11 através do SSH, sugiro dar uma olhada nisso: link
Explica como obter um comportamento semelhante ao 'screen', mas com aplicativos X11.