2016-05-02 23 views
0

私はSwingのGUIを示すKuraのバンドルを作成するのに助けが必要です。私はJavaとOSGIを使ってバンドルを作成しています。私はラズベリーPIでそれを実行します。kura上のJava swing GUI

私は、バンドルのアクティベーターの内側にこのコードを置く:私を助けてください

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)

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); 
    } 

しかし、私はバンドルをアップロードすると、システムはこのエラーを返します!

+1

[多分これ](http://stackoverflow.com/questions/20648809/raspberry-pi-no-x11-display-variable-was-set-but - このプログラム実行されたope)または[this](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

こんにちは、 (私はユーロテックのESFを使用しています) 私は DISPLAY = localhostを入れます。/ opt /ユーロテック/ ESF/binに/ STに0.0 をart_kura_debug_background.shとこれでDISPLAYの問題は解決されましたが、もう1つあります: java.lang.NoClassDefFoundError:クラスsun.awt.X11.XToolkitを初期化できませんでした これはJavaの問題だと思います。私のバンドルに何かを詰める必要があります... –