繁体   English   中英

库拉上的java swing GUI

[英]java swing GUI on kura

我需要在Kura中创建一个显示Swing GUI的捆绑软件的帮助。 我正在使用Java和OSGI创建捆绑包。 我在raspberryPI上运行它。

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

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)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(本机方法)java.security.ProtectionDomain $ 1.doIntersectionPrivilege(ProtectionDomain.java:75)在java.awt.EventQueue.dispatchEvent(EventQueue.java:714)在java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)在java.awt.EventDispatchThread.pumpEventsForFilter(EventD) ispatchThread.java:116),位于java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105),位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101),位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) )在java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

请帮我!

当然,请确保按照以前的建议正确设置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上不起作用。

谢谢,

-戴夫

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM