Algumas bibliotecas Java exigem um servidor X como parte de seu código de inicialização, quer o programa acabe sendo usado ou não.
Se você precisa de um servidor X apenas para ter um, você pode usar o Xvfb , que é o servidor X com um framebuffer virtual, ou seja, um servidor X que exibe apenas na memória e não se conecta a nenhum hardware.
Xvfb :1 -screen 0 1x1x8 &
Você precisa esperar um pouco depois de iniciar o Xvfb para que a exibição esteja disponível. Em um script, você pode dizer ao servidor X para iniciar algum programa quando estiver pronto.
mkfifo ready
xinit /bin/sh -c 'echo >ready; exec sleep 99999999' -- /usr/bin/Xvfb :1 -screen 0 1x1x8 &
read ready
export DISPLAY=:1
…