2016-05-02 31 views
0

我需要幫助才能在Kura中創建一個顯示Swing GUI的包。我正在使用Java和OSGI來創建捆綁。我在raspberryPI上運行它。在kura上的java swing圖形用戶界面

我把這個代碼捆綁的激活內:

public void activate(ComponentContext componentContext, Map<String,Object> properties) 
{ 
    System.out.println("Sono AstroGUI!!!!"); 

    Runnable runnable = new Runnable() { 
      public void run() { 
     createAndShow(); 
      } 
     }; 
     SwingUtilities.invokeLater(runnable); 
} 

static void createAndShow() { 


    JFrame frame = new JFrame("Hello World"); 
    frame.setSize(640,480); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 
    } 

但是當我上傳捆綁,系統返回此錯誤:

Exception in thread "AWT-EventQueue-0" 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:207) at java.awt.Window.(Window.java:536) at java.awt.Frame.(Frame.java:420) at javax.swing.JFrame.(JFrame.java:225) at com.riccardofontanini.astrogui.AstroGUIActivator.createAndShow(AstroGUIActivator.java:56) at com.riccardofontanini.astrogui.AstroGUIActivator$1.run(AstroGUIActivator.java:47) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:744) at java.awt.EventQueue.access$400(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:697) at java.awt.EventQueue$3.run(EventQueue.java:691) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) at java.awt.EventQueue.dispatchEvent(EventQueue.java:714) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

請幫幫我!

+1

[也許這](http://stackoverflow.com/questions/20648809/raspberry-pi-no-x11-display-variable-was-set-but - 該程序執行的-AN-OPE)或[此](http://stackoverflow.com/questions/5218870/getting-a-headlessexception-no-x11-display-variable-was-set) – MadProgrammer

+0

或檢查這http://stackoverflow.com/a/5218891/4606266 – ziLk

回答

3

當然要確保X11按照以前的建議正確安裝。您也可以嘗試編輯Kura的啓動腳本,以確保Kura啓動時X已準備就緒。啓動腳本位於/ opt/eclipse/kura/bin中。 Kura在啓動時使用的默認腳本是start_kura_background.sh。編輯這個文件,並添加以下行:

if ! xset q &>/dev/null; then 
    echo 「Starting X Server...」 
    su -s /bin/bash -c xinit root& export DISPLAY=:0 
    echo 「X Server started !」 
else 
    echo 「X Server already running, DISPLAY variable setted」 

此外,你使用的是什麼版本的Java?我只看到完整的Oracle JRE上的這項工作。我還沒有在OpenJDK上嘗試Eclipse Kura + Swing,並且它不適用於Java Embedded。

謝謝,

--Dave

+0

嗨, (我用的Eurotech的ESF) 我把 DISPLAY =本地主機:0.0 在/ opt /歐科/ ESF /斌/短噸art_kura_debug_background.sh解決DISPLAY問題,但現在又出現了另一個問題: java.lang.NoClassDefFoundError:無法初始化類sun.awt.X11.XToolkit 我認爲這是一個Java問題......或者我必須在我的包中包裝一些思想... –