Existe una forma segura y programática de determinar si es seguro abrir una ventana Swing?

Tengo una aplicación Java que el usuario puede invocar desde la línea de comandos ejecutando java -jar app.jar o desde un entorno de escritorio haciendo doble clic en el archivo .jar.

Me gustaría que la aplicación pueda detectar si puede iniciar de forma segura una GUI de Swing o si tiene que usar una interfaz de línea de comandos. Si solo empiezo a llamar a las funciones de Swing sin verificar la disponibilidad de un sistema de ventanas, Java rescata con un InternalError.

Por ejemplo, si desarmo DISPLAY y ejecuto la aplicación, obtengo:

java.lang.InternalError: Can't connect to X11 window server using '' as the value of the DISPLAY variable.
    at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
    at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:62)
    at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:178)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.awt.X11GraphicsEnvironment.(X11GraphicsEnvironment.java:142)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:186)
    at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82)
    at sun.awt.X11.XToolkit.(XToolkit.java:112)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:186)
    at java.awt.Toolkit$2.run(Toolkit.java:849)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:841)
        [etc]

Solo podría intentar ... detectar el InternalError y ejecutar la interfaz de línea de comandos en ese caso, pero escuché que uno no debería detectar los errores porque podrían dejar la JVM en un estado inconsistente. (Por favor corrígeme si estoy equivocado.

¿Hay alguna forma de verificar si puedo abrir de forma segura una ventana Swing sin detectar un error interno? (Podría comprobar si la variable de entorno DISPLAY no está vacía, pero un DISPLAY no vacío no garantiza que el servidor X realmente funcione. Tampoco funcionaría en entornos que no sean X11).

Respuestas a la pregunta(2)

Su respuesta a la pregunta