2011-09-20 80 views
1

有什么办法可以让java忽略代码中的任何调用到X11系统?我在一台没有窗口管理器的服务器上运行应用程序。当我运行这个应用程序时,我得到java.awt.HeadlessException。我已经尝试设置-Djava.awt.headless = true/System.setProperty(“java.awt.headless”,true)。没有运气。使java忽略对X11的调用

我是否真的必须手动删除所有与图形系统进行交互的代码行或者有更优雅的方式?谢谢。在无头模式

+0

你可以安装像http://www.tightvnc.com/虚拟窗口管理器。这将绕开这些问题。 – oers

+0

我做到了。然后我设置DISPLAY来匹配VNC桌面,但是我仍然得到java.awt.HeadlessException。 – azerIO

+2

这可能听起来很愚蠢,但您使用的是什么版本的JVM。看来,直到(并且包括一些)版本1.4在Sun/Oracle jdk上有一个bug:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4281163。另外fi你正在使用另一个jdk,看起来它本身并没有这个bug(显然苹果JDK有长久的bug) –

回答

0

使用Java Java headless mode

+1

您无法在无头模式下实例化顶级容器。 – trashgod

+0

所以唯一的解决方案是手动找到所有X11呼叫地点并发表评论? – azerIO

+0

不知道slackware,但VNC可以在很多平台上运行,并且可以[while](http://www.jfree.org/forum/viewtopic.php?f=3&t=1012&hilit=X11+DISPLAY + BufferedImage) 。 – trashgod