Не удалось запустить 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 и файл JJSplit jar.
Заранее спасибо
Ответы
Ответ 1
Ubuntu имеет возможность установки безголовой Java - это означает отсутствие графических библиотек. Это было не всегда так, но я столкнулся с этим, пытаясь запустить текстовый редактор Java на 10.10 на днях. Для установки JDK, имеющего эти библиотеки, выполните следующую команду:
sudo apt-get install openjdk-6-jdk
EDIT: На самом деле, глядя на мою конфигурацию, вам может понадобиться JRE. Если это произойдет, запустите:
sudo apt-get install openjdk-6-jre
Ответ 2
Я прекратил получать это исключение, когда я установил default-jdk
с помощью apt
. Я запускаю Ubuntu 14.04, и проблема, похоже, была результатом установки "безголового" Java. Все, что я сделал, это:
sudo apt-get install default-jdk
Надеюсь, что это поможет.
Ответ 3
У меня тоже было 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 на горячую точку VM работает нормально,
sudo apt-get autoremove openjdk-7-jre-headless
Как установить JDK на Ubuntu (Linux)?
Ответ 4
В моем случае
-Djava.awt.headless=true
был установлен (косвенно с помощью конфигурации maven). Мне пришлось активно использовать
-Djava.awt.headless=false
чтобы переопределить это.
Ответ 5
Проверьте переменные среды XWindow с помощью команды "env".
Ответ 6
Используйте JFrame вместо Frame. И не распространяйтесь на JFrame. Просто напишите класс, у которого есть JFrame propperty с именем gui, который настраивает этот JFrame с доступными методами, потому что это лучше, чем стиль. Выявление здесь неправильного использования ООП.
Ответ 7
Проверьте, какое значение переменной DISPLAY переменной среды. Попробуйте запустить простое приложение X из командной строки. Если это работает, проверьте значение DISPLAY для правильного значения.
Вы можете поэкспериментировать с разными значениями и переменной среды для каждой операции вызова, выполнив в командной строке следующее:
DISPLAY=:0.0 <your-java-executable-here>
Как вы называете свою программу?
Ответ 8
Я бы уточнил с другой реализацией/поставщиком Java. Предпочтительно Oracle/Sun Java: http://www.java.com/en/. Внедрение с открытым исходным кодом, к сожалению, отличается странными способами.
Ответ 9
Вы сидите на самом компьютере Ubuntu или подключены по сети? У вас есть настольный сервер X/Windows, или вы просто подключены через терминал? Ошибка указывает на то, что X/Windows недоступна - для отображения любого графического интерфейса в Linux.
Ответ 10
Эта команда работала для меня.
Sudo dnf install java-1.8.0-openjdk
(Fedora)
Sudo apt-get install java-1.8.0-openjdk
Должен работать для Ubuntu.