Запуск приложений Java GUI через терминал Linux

Я на Ubuntu пытаюсь запустить приложение Java GUI через терминал. Я получаю исключение HeadlessException, когда я пытаюсь запустить его. Ниже показана трассировка стека:

Exception in thread "AWT-EventQueue-0" java.awt.HeadlessException
    at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:173)
    at java.awt.Window.<init>(Window.java:437)
    at java.awt.Frame.<init>(Frame.java:419)
    at java.awt.Frame.<init>(Frame.java:384)
    at javax.swing.JFrame.<init>(JFrame.java:174)
    at gui.ImageViewer.<init>(ImageViewer.java:34)
    at displayrunner.DisplayRunner$1.run(DisplayRunner.java:15)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:226)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:647)
    at java.awt.EventQueue.access$000(EventQueue.java:96)
    at java.awt.EventQueue$1.run(EventQueue.java:608)
    at java.awt.EventQueue$1.run(EventQueue.java:606)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:617)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)

Я попробовал export DISPLAY=:0.0 перед запуском приложения, но это не повлияло. Как запустить GUI-приложение через Bash?

Ответ 1

Я предполагаю, что у вас установлен только пакет default-jre-headless. Убедитесь, что у вас есть default-jre.

Ответ 2

У меня было это исключение. Я попытался установить ложную настройку безголоса, и это сработало для меня:

export JAVA_TOOL_OPTIONS='-Djava.awt.headless=false'

Ответ 3

Если вы запустите приложение на Ubuntu с помощью команды:

java -jar MyJar.jar

то используется OpenJDK. Попробуйте установить Sun JDK и запустите приложение, например:

/usr/java/jre1.6.0_22/bin/java -jar MyJar.jar

Ответ 4

Если у вас нет графического интерфейса, вы не можете его запустить. Вы работаете удаленно (например, SSH)?

Если да, просмотрите систему, которую вы используете для удаленного доступа. Например, с помощью SSH вы хотите посмотреть параметр AllowX11Forwarding (запись в FAQ SSH).