Не удалось запустить Java GUI-программы с Ubuntu

Я изучаю 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)

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

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

9 ответов


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

sudo apt-get install openjdk-6-jdk

EDIT: на самом деле, глядя на мою конфигурацию, вам может понадобиться JRE. Если это так, запустите:

sudo apt-get install openjdk-6-jre

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

sudo apt-get install default-jdk

у меня тоже было 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 VM отлично работает:

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

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


в моем случае

-Djava.awt.headless=true

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

-Djava.awt.headless=false

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


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

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

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

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


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


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


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


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

Sudo dnf install java-1.8.0-openjdk (Fedora)

Sudo apt-get install java-1.8.0-openjdk

должен работать для Ubuntu.