[英]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.