Como executar um programa Java awt Hedless em um ambiente de servidor?

0

Estou executando um programa java que já é capaz de trabalhar a partir da linha de comando, mas somente se um servidor x estiver em execução.

Na verdade, no meu ubuntu 16.04 x64 VPS eu tenho essa exceção java

Caused by: java.awt.HeadlessException: No X11 DISPLAY variable was set, but this program performed an operation which requires it.

Como consertar isso?

Eu tentei

sudo apt-get install ubuntu-desktop

É claro que é inútil para mim, mas achei que foi o suficiente para satisfazer a necessidade de um servidor X ...

O que eu posso fazer agora?

ATUALIZAÇÃO:

Eu tentei, depois de muita pesquisa no Google, fazer

root@ziff-01:~# X -configure
(EE)
Fatal server error:
(EE) Server is already active for display 0
        If this server is no longer running, remove /tmp/.X0-lock
        and start again.

Então, se X estiver ativo, onde / como devo configurar esse "DISPLAY var" ?

    
por realtebo 06.07.2016 / 17:54

1 resposta

1

Instalar o ubuntu-desktop não é suficiente. O problema é que, neste contexto, o programa é executado fora de um servidor X.

Você pode tentar declarar a variável DISPLAY antes de chamá-la, fazendo com que ela use seu servidor X (recém-instalado) ... mas você provavelmente terá problemas de permissão. Isso seria parecido com: export DISPLAY=:0.0 , que é o padrão (mas não é definido quando você acessa o computador pelo console).

Você pode procurar aqui detalhes sobre o que é a variável DISPLAY e como configurá-la: O que é a variável de ambiente $ DISPLAY

EDIT: a partir de sua informação adicional na questão, parece que seu servidor está realmente usando "display 0", e então export DISPLAY=:0.0 deve funcionar. A razão pela qual isso não acontece provavelmente é devido aos direitos de acesso - você precisa logar no X para poder exibir qualquer coisa nele. Foi o que eu quis dizer ao falar sobre permissões.

Solução recomendada

Outra maneira (provavelmente melhor) de lidar com isso e que usei há muito tempo, é usar um servidor X virtual como o Xvfb ( link ) Ele age como um servidor X, mas não executa operações. Então seu aplicativo deve ficar feliz com isso. Na verdade, é um dos casos de uso listados na entrada da Wikipedia para ele.

Para usá-lo, você precisa fazer o seguinte:

sudo apt-get install xvfb
xvfb-run [your command]

Uma palavra de cautela: pode haver uma razão para seus programas quererem um servidor X. Pode precisar de algum nível de interação com o usuário e, se for esse o caso, não conseguir ver o que está acontecendo fará com que o programa seja inútil ...

Eu recomendaria procurar informações com o criador do programa ou com outros usuários deste programa, em vez da comunidade Ubuntu.

    
por Little Jawa 06.07.2016 / 18:05