Once I wrote some JUnit tests for a framework which referenced GUI components in the model. No worries on my development machine - but as I moved those tests to the test server I’ve got that bloody HeadlessException. At this very moment I felt a bit headless too.
But don’t panic - here is a quick ‘n easy solution (at least if your running a Linux/Unix like OS, well you won’t run into this problem on a Windows machine).
The trick is to run a virtual framebuffer X server (Xvfb) which can run on machines with no display hardware and no physical input devices.
#!/bin/bash
# Start fake X server
/usr/bin/X11/Xvfb :1 -screen 0 800x600x16 &
echo "Xvf started"# Export display
export DISPLAY=:1.0
# Now, start your application, tests or whatsoever...
java -jar mytests net.n0fx.TestSuite
# Kill the fake X server after your done
PID=`ps -fu ${LOGNAME} | grep 'Xvf' | grep -v grep | awk '{print $2}'`
if [ "$PID" != "" ]; then
kill -9 $PID
echo "Xvf stopped";
else
echo "Xvf is not running";
fi