Не удалось запустить 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
в моем случае
-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/ . Реализации с открытым исходным кодом, к сожалению, отличаются странными способами.
используйте 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.