web-dev-qa-db-ja.com

デスクトップの例外[sic!] Sun.awt.X11GraphicsEnvironment

以前は実行していたさまざまなJavaスイングプログラムを実行しようとしていますが、このエラーを取得せずにコマンドラインから起動することはできません。

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を起動するために、エラーメッセージをグーグルで検索し、アドバイスを見つけることができます。これはここでは当てはまりません。thereという考え方は、サーバー上でグラフィックを処理したり、グラフを作成したり、通常はディスプレイが必要なグラフィックを変換したりするためのものだからです。サーバーに何も表示されないため、「ヘッドレス」を指定できます。ここでは逆です。フレームを表示したいのですが、DISPLAY =:0.0があり、xterm(たとえばxfce4)が実行されています。メニューからecliplseを起動することもできます。

同様に、unset DISPLAYというアドバイスは、まったく同じ理由で私には合いません。 I needディスプレイを使用し、ディスプレイが反応している-現在、そのマシンでFirefoxを使用しています。

echo $DISPLAY
:0.0

Verve-comamndlineなどの特別な入力から実行しようとしても機能しません。

それは私には謎です。 Xorg.0.logも興味深いものを表示しません。

2
user unknown

このコンピューターで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

^ suns Java(以前のOracle :)に切り替えました)

および:ビンゴ:これ以上エラーメッセージは表示されず、プログラムが実行されます。

誰かがOpenJDKのソリューションを持っている場合:どういたしまして。しかし、私はもはやそれほど興味がなく、これに何時間もテストを費やしません。 :)

しかし、あなたは揺れ動きます!

2
user unknown

私のためにopenjdkによって働いた:

ホストマシンで、次のように入力します。

$ xhost local:
2
Danial Behzadi