Невозможно запустить программы Java с графическим интерфейсом с Ubuntu - PullRequest
33 голосов
/ 19 марта 2011

Я изучаю GUI на Java, и для этого я создал демонстрационную программу:

import java.awt.*;

public class FrameDemo extends Frame {

    public FrameDemo(){
        super("Frame Demo");
        setSize(200, 200);
        setVisible(true);
    }

    public static void main(String args[]){
        new FrameDemo();    
    }
}

Успешно скомпилировано. Но когда я попытался выполнить программу, я обнаружил следующую ошибку:

Exception in thread "main" 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 FrameDemo.<init>(FrameDemo.java:4)
    at FrameDemo.main(FrameDemo.java:9)

Я использую Xubuntu 10.10, а java -version дает:

java version "1.6.0_20"
OpenJDK Runtime Environment (IcedTea6 1.9.5) (6b20-1.9.5-0ubuntu1)
OpenJDK Client VM (build 19.0-b09, mixed mode, sharing)

Что мне делать?

Еще одна вещь: это та же ошибка, что и я, когда пытался запустить jar-файл Dr. Java и HJSplit.

Ответы [ 9 ]

46 голосов
/ 19 марта 2011

В Ubuntu есть возможность установить безголовую Java - это значит, без графических библиотек. Это не всегда имело место, но я столкнулся с этим при попытке запустить текстовый редактор Java 10.10 на днях. Выполните следующую команду, чтобы установить JDK с этими библиотеками:

sudo apt-get install openjdk-6-jdk

РЕДАКТИРОВАТЬ: На самом деле, глядя на мою конфигурацию, вам может понадобиться JRE. Если это так, запустите:

sudo apt-get install openjdk-6-jre
10 голосов
/ 24 ноября 2014

Я перестал получать это исключение, когда установил default-jdk с использованием apt.Я использую Ubuntu 14.04 (Trusty Tahr), и проблема, как представляется, является результатом установки «безголовой» Java.Все, что я сделал, было:

sudo apt-get install default-jdk
3 голосов
/ 12 апреля 2016

В моем случае

-Djava.awt.headless=true

был установлен (косвенно с помощью конфигурации Maven ). Я должен был активно использовать

-Djava.awt.headless=false

чтобы переопределить это.

2 голосов
/ 06 октября 2014

У меня тоже было OpenJDK на моей машине с Ubuntu:

$ java -version
java version "1.7.0_51"
OpenJDK Runtime Environment (IcedTea 2.4.4) (7u51-2.4.4-0ubuntu0.13.04.2)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)

Замена OpenJDK виртуальной машиной HotSpot работает нормально:

sudo apt-get autoremove openjdk-7-jre-headless

Как установить JDK в Ubuntu (Linux)

0 голосов
/ 05 сентября 2017

Эта команда сработала для меня.

Sudo dnf install java-1.8.0-openjdk (Fedora)

Sudo apt-get install java-1.8.0-openjdk

Должно работать на Ubuntu.

0 голосов
/ 19 марта 2011

Я бы посоветовался с другой реализацией / поставщиком Java. Предпочтительно Oracle / Sun Java: http://www.java.com/en/. Реализации с открытым исходным кодом, к сожалению, отличаются странным образом.

0 голосов
/ 19 марта 2011

Проверьте значение переменной DISPLAY вашей среды.Попробуйте запустить простое приложение X из командной строки.Если это работает, проверьте значение DISPLAY для правильного значения.

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

DISPLAY=:0.0 <your-java-executable-here>

Как вы называете свою программу?

0 голосов
/ 19 марта 2011

Используйте JFrame вместо Frame.И не выходите из JFrame.Просто напишите класс, у которого есть свойство JFrame с именем gui, которое настраивает этот JFrame с помощью доступных методов, потому что это лучше сделать так.Расширение здесь неправильное использование ООП.

0 голосов
/ 19 марта 2011

Проверьте переменные окружения X Window с помощью команды "env".

...