我正在尝试运行以前运行过的不同的 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 也没有显示有趣的东西。
我不记得我在这台计算机上激活了 OpenJDK,并且最近切换到它。
在 steaberts 发表评论后,我很快找到了解决方案:
^ 这是装置
^ 切换到 suns java(以前称为 oracle :) )
并且:宾果游戏:不再有错误消息,程序运行。
如果有人有 OpenJDK 的解决方案:不客气。但我不再那么感兴趣,也不会在这上面花费数小时的测试。:)
然而:你摇滚!
由openjdk为我工作:
在您的主机上,输入: