设置Linux桌面/ GUI环境

时间:2012-11-20 09:18:00

标签: java linux-kernel desktop embedded-linux

AndroidLinux kernel为基础,大多数Linux系统都使用GNOMEKDELXDE等桌面环境。

我使用busyboxarm cross compiler工具链和arm-J2SE编译了Linux内核和最小根文件系统。目前我有基本的Command Line Interface。现在我想使用桌面环境(启用鼠标并处理鼠标或触摸屏输入/事件)。因为我的java命令行代码运行正常,但是当我使用swingawt应用程序时,它会显示此异常。

Exception in thread "main" java.awt.HeadlessException at
         java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207)
at java.awt.Window.<init>(Window.java:535)
at java.awt.Frame.<init>(Frame.java:420)
at javax.swing.JFrame.<init>(JFrame.java:224)
at Gui.main(Gui.java:7)

我看一下javadoc并显示,

public class HeadlessException
        extends UnsupportedOperationException

Thrown when code that is dependent on a keyboard, display, or mouse is called in an environment that does not support a keyboard, display, or mouse.

基本上它需要一些窗口管理或类似GUI的环境。我发现很少有用于构建像XLIB/X11,SDL这样的GUI环境的库,它可以管理那些鼠标和触摸屏事件。任何人都可以告诉我从哪里开始实现我的目标。很少有Linux系统使用startx命令启用GUI环境然后带来了桌面,窗口,鼠标等。我需要这样的东西来运行我的java gui应用程序。任何人都可以引导我。

2 个答案:

答案 0 :(得分:2)

I know every Linux system should have a desktop environment like GNOME, KDE, LXDE etc.

那是错的。考虑服务器或嵌入式系统(不是智能手机),它为什么需要UI? OS内核不必提供GUI。

以下是Android架构/图层层,Surface Manager + Window Manager + View System是Android的桌面环境

enter image description here

有关Linux和图形系统的更多信息,请查看SO question

对于Java异常,您正在使用无头Java环境并尝试使用Swing / AWT,而不支持无头Java环境的定义。

How can I setup a GUI environment that supports mouse,keyboard or other inputs?

您正在尝试移植 Android到您的设备,如果您的设备没有正在进行的Android端口工作,则需要深入了解它所拥有的外围设备以及Android系统。网上有大量的信息,但这不是一项微不足道的任务。

答案 1 :(得分:0)

首先,Linux发行版不需要GUI。或者你必须说 - X Window System。

  
    

有谁可以告诉我Android使用的是哪种桌面环境?

  

无。 Android不使用X.

  
    

我是否必须实现支持键盘和鼠标的桌面环境?

  

我不知道。我不知道你想要达到的目的。如果您想查看您的程序是否适用于Android,请查看Android SDK。您可能需要查看Android模拟器并编写代码,并牢记SDK。