Исключение на рабочем столе [sic!] Sun.awt.X11GraphicsEnvironment

Я пытаюсь запустить разные программы java-swing, которые раньше запускались, но я не могу запустить их из командной строки, не получив эту ошибку:

java GuessGame
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82)
at sun.awt.X11.XToolkit.<clinit>(XToolkit.java:112)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at java.awt.Toolkit$2.run(Toolkit.java:849)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:841)
at sun.swing.SwingUtilities2$AATextInfo.getAATextInfo(SwingUtilities2.java:121)
at javax.swing.plaf.metal.MetalLookAndFeel.initComponentDefaults(MetalLookAndFeel.java:1564)
at javax.swing.plaf.basic.BasicLookAndFeel.getDefaults(BasicLookAndFeel.java:147)
at javax.swing.plaf.metal.MetalLookAndFeel.getDefaults(MetalLookAndFeel.java:1599)
at javax.swing.UIManager.setLookAndFeel(UIManager.java:530)
at javax.swing.UIManager.setLookAndFeel(UIManager.java:570)
at javax.swing.UIManager.initializeDefaultLAF(UIManager.java:1320)
at javax.swing.UIManager.initialize(UIManager.java:1407)
at javax.swing.UIManager.maybeInitialize(UIManager.java:1395)
at javax.swing.UIManager.getDefaults(UIManager.java:644)
at javax.swing.UIManager.getString(UIManager.java:790)
at javax.swing.UIManager.getString(UIManager.java:807)
at javax.swing.JOptionPane.showInputDialog(JOptionPane.java:476)
at javax.swing.JOptionPane.showInputDialog(JOptionPane.java:442)
at IO.input(GuessGame.java:10)
at Player.createPlayer(GuessGame.java:26)
at GuessGame.init(GuessGame.java:52)
at GuessGame.main(GuessGame.java:85)

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

Вы можете погуглить сообщение об ошибке и найти совет, чтобы запустить Java в автономном режиме. Это не применимо здесь, потому что идея заключается в том, чтобы создавать графические объекты на сервере, возможно, создавать диаграммы или преобразовывать графику, для которой обычно требуется отображение. Затем вы можете указать "безголовый", потому что на сервере ничего не отображается. Здесь все наоборот: я хочу, чтобы мой кадр отображался, и у меня есть DISPLAY=:0.0, где работает мой xterm (например, xfce4). Я даже могу начать затмение из меню.

Похоже, совет unset DISPLAY не подходит мне по той же причине. Мне нужно использовать дисплей, и он работает и реагирует - я сейчас использую Firefox на этой машине.

echo $DISPLAY
:0.0

Попытка запустить из специального ввода, такого как verve-comamndline, тоже не работает.

Это для меня загадка. Xorg.0.log тоже не показывает ничего интересного.

2 ответа

Решение

Я не помню, чтобы на этом компьютере был активирован OpenJDK, и я недавно переключился на него.

После комментария Steaberts я нашел решение очень быстро:

update-java-alternatives -l
java-1.5.0-sun 53 /usr/lib/jvm/java-1.5.0-sun
java-6-openjdk 1061 /usr/lib/jvm/java-6-openjdk
java-6-sun 63 /usr/lib/jvm/java-6-sun

^ Это установки

sudo update-java-alternatives -s java-6-sun

^ переключился на солнце Java (ранее известный как оракул:))

и: Бинго: сообщения об ошибках больше нет, программа запускается.

Если у кого-то есть решение для OpenJDK: пожалуйста. Но я уже не очень заинтересован и не буду тратить на это часы тестов.:)

Однако: ты рок!

Работает openjdk для меня:

На хост-машине введите:

$ xhost local:
Другие вопросы по тегам