0

我需要帮助才能在 Kura 中创建一个显示 Swing 图形用户界面的包。我正在使用 Java 和 OSGI 创建捆绑包。我在树莓派上运行它。

我将此代码放在捆绑包的激活器中:

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

但是当我上传捆绑包时,系统返回此错误:

线程“AWT-EventQueue-0”java.awt.HeadlessException 中的异常:未设置 X11 DISPLAY 变量,但该程序执行了需要它的操作。在 java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207) 在 java.awt.Window.(Window.java:536) 在 java.awt.Frame.(Frame.java:420) 在 javax.swing.JFrame。 (JFrame.java:225) 在 com.riccardofontanini.astrogui.AstroGUIActivator.createAndShow(AstroGUIActivator.java:56) 在 com.riccardofontanini.astrogui.AstroGUIActivator$1.run(AstroGUIActivator.java:47) 在 java.awt.event.InvocationEvent .dispatch(InvocationEvent.java:311) 在 java.awt.EventQueue.dispatchEventImpl(EventQueue.java:744) 在 java.awt.EventQueue.access$400(EventQueue.java:97) 在 java.awt.EventQueue$3.run( EventQueue.java:697) 在 java.awt.EventQueue$3。

请帮我!

4

1 回答 1

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。

谢谢,

——戴夫

于 2016-05-02T21:22:01.523 回答