2016-05-02 11 views
0

Ich brauche Hilfe, um ein Bündel in Kura zu erstellen, die eine Swing GUI zeigen. Ich verwende Java und OSGI, um Bundles zu erstellen. Ich betreibe es auf raspberryPI.Java Swing GUI auf Kura

Ich habe diesen Code innerhalb der Aktivator des Bundles:

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

Aber wenn ich das Bündel laden, kehrt das System diesen Fehler:

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)

Bitte helfen Sie mir!

+1

[Vielleicht] (http://stackoverflow.com/questions/20648809/raspberry-pi-no-x11-display-variable-was-set-but -dieses Programm-ausgeführt-an-ope) oder [dies] (http://stackoverflow.com/questions/5218870/getting-a-headlessexception-no-x11-display-variable-wa-set) – MadProgrammer

+0

oder überprüfen Sie dies Hallo http://stackoverflow.com/a/5218891/4606266 – ziLk

Antwort

3

Stellen Sie sicher, dass X11 ordnungsgemäß eingerichtet ist, wie zuvor vorgeschlagen. Sie können auch versuchen, das Start-Skript für Kura zu bearbeiten, um sicherzustellen, dass X bereit ist, wenn Kura startet. Die Startup-Skripte befinden sich in/opt/eclipse/kura/bin. Das Standard-Skript, das Kura beim Booten verwendet, ist start_kura_background.sh. Bearbeiten Sie diese Datei und fügen Sie die folgenden Zeilen:

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” 

Auch, welche Version von Java sind Sie mit? Ich habe diese Arbeit nur an einer vollständigen Oracle JRE gesehen. Ich habe Eclipse Kura + Swing nicht auf OpenJDK ausprobiert, und es wird nicht auf Java Embedded funktionieren.

Danke,

--Dave

+0

, (ich verwende eurotech des esf) ich habe DISPLAY = localhost: 0.0 in/opt/eurotech/esf/bin/st art_kura_debug_background.sh und das löst das DISPLAY-Problem, aber jetzt gibt es ein anderes: java.lang.NoClassDefFoundError: Konnte nicht initialisieren Klasse sun.awt.X11.XToolkit Ich denke, das ist ein Java-Problem ... oder ich muss etwas in mein Bündel packen ... –