作者 主題: java 程式突然不能執行了, 出現 No X11 DISPLAY variable was set 的錯誤 @@  (閱讀 14893 次)

0 會員 與 1 訪客 正在閱讀本文。

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
各位好~~  <(_ _)>

我的環境是 openSUSE 11 x64 + GNome + Java(TM) SE Runtime Environment (build 1.6.0_07-b06)

昨天早上還可以正常執行我的 java ap, 後來因為系統安全更新, 並重新安裝 nvidai 的 driver

昨晚要再開 java ap 就開不了了  :'( :'(

引用
Exception in thread "main" java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
   at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:159)
   at java.awt.Window.<init>(Window.java:407)
   at java.awt.Frame.<init>(Frame.java:402)
   at javax.swing.JFrame.<init>(JFrame.java:207)
   at tiled.mapeditor.MapEditor.<init>(Unknown Source)
   at tiled.mapeditor.MapEditor.main(Unknown Source)

這是最初的訊息, 後來 export DISPLAY=localhost:0 還是不行..

引用
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:169)
   at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:68)
   at sun.awt.X11.XToolkit.<clinit>(XToolkit.java:89)
   at java.lang.Class.forName0(Native Method)
   at java.lang.Class.forName(Class.java:169)
   at java.awt.Toolkit$2.run(Toolkit.java:836)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:828)
   at sun.swing.SwingUtilities2$AATextInfo.getAATextInfo(SwingUtilities2.java:120)
   at javax.swing.plaf.metal.MetalLookAndFeel.initComponentDefaults(MetalLookAndFeel.java:1556)
   at javax.swing.plaf.basic.BasicLookAndFeel.getDefaults(BasicLookAndFeel.java:130)
   at javax.swing.plaf.metal.MetalLookAndFeel.getDefaults(MetalLookAndFeel.java:1591)
   at javax.swing.UIManager.setLookAndFeel(UIManager.java:537)
   at javax.swing.UIManager.setLookAndFeel(UIManager.java:577)
   at javax.swing.UIManager.initializeDefaultLAF(UIManager.java:1331)
   at javax.swing.UIManager.initialize(UIManager.java:1418)
   at javax.swing.UIManager.maybeInitialize(UIManager.java:1406)
   at javax.swing.UIManager.getDefaults(UIManager.java:656)
   at javax.swing.UIManager.getString(UIManager.java:785)
   at javax.swing.undo.UndoManager.getUndoPresentationName(UndoManager.java:555)
   at tiled.mapeditor.undo.UndoHandler$UndoAction.<init>(Unknown Source)
   at tiled.mapeditor.undo.UndoHandler.<init>(Unknown Source)
   at tiled.mapeditor.MapEditor.<init>(Unknown Source)
   at tiled.mapeditor.MapEditor.main(Unknown Source)

執行加上 -Djava.awt.headless=true 也是無解...

引用
Exception in thread "main" java.awt.HeadlessException
   at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:159)
   at java.awt.Window.<init>(Window.java:407)
   at java.awt.Frame.<init>(Frame.java:402)
   at javax.swing.JFrame.<init>(JFrame.java:207)
   at tiled.mapeditor.MapEditor.<init>(Unknown Source)
   at tiled.mapeditor.MapEditor.main(Unknown Source)

jdk, jre, nvidia driver 也重裝 3, 4 次了, 依然是這些錯誤訊息  :'( :'(

在這之前也曾經 reinstall nvidia driver, 安裝好之後都正常啊!!

難道跟上回 VBox 的情形一樣, 又要重灌系統嗎? 囧oz...

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
找到錯誤訊息的原因了, 原來是執行這個 java ap 的 user_id 沒有使用 X server 的權限(?)

AUDIT: Wed Sep 17 18:01:40 2008: 6974 X: client 25 rejected from local host (uid 1002)


因為我是先用 user1 登入 x-window, 然後 su user2

之前這樣做都可以順利執行 java ap 啊

也沒做啥設定, 直接就可以執行

現在卻不行了, 如果用 user2 登入 x-win

那就沒問題....
« 上次編輯: 2008-09-17 19:44 由 yamaka »

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
弄了一個晚上還是沒有結果  :'(


現在的情形是這樣, user1 為安裝系統時預設的 user, 並且設為開機時自動登入 x-win

user2 我要用來執行 java ap(gui), 我都是 user1 登入後在 gnome 終端機  su user2

這樣可以將執行 java ap 時用到的指令跟 user1 分開, 方便記憶 ^^

9/16早上系統更新前, 一切都正常, user2 執行 java ap 都沒有任何錯誤訊息

系統更新後, 卻出現我第一篇貼的情形, 今天用 user1 執行 java ap 是可以正常開啟的

我另外新增加一個 user3 來開啟 java ap, 結果也是同樣的情形 = =

那..我現在如何能夠讓 user2 像 user1 一樣能正常開啟 java ap  ???