2016-05-02 3 views
0

Мне нужна помощь для создания пакета в Куре, который показывает графический интерфейс Swing. Я использую Java и OSGI для создания пакетов. Я запускаю его на малине PI.java swing GUI на куре

я ставлю этот код внутри активатора Расслоение в:

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 -this-program-done-a-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, чтобы гарантировать, что X будет готов, когда Kura начнет. Сценарии запуска находятся в/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 вы используете? Я только видел эту работу над полным JRE Oracle. Я не пробовал Eclipse Kura + Swing на OpenJDK, и он не будет работать на Java Embedded.

Спасибо,

--Dave

+0

Привет, (я использую ESF Eurotech в) я поставил DISPLAY = локальный: 0,0 в/Opt/Eurotech/ESF/бен/е art_kura_debug_background.sh и это решает проблему DISPLAY, но теперь есть еще один: java.lang.NoClassDefFoundError: Не удалось инициализировать учащемуся sun.awt.X11.XToolkit Я думаю, что это проблема Java ... или я должен упаковать sometink в моем комплекте ... –