您确定java.awt.headless属性正确进入您的环境吗?由于某种原因,您的小程序是否打算在无头环境中运行?以下是一个演示什么旗做一个快速的示例应用程序:
import java.awt.GraphicsEnvironment;
public class GETest {
public static void main(String[] args) {
GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
System.out.println("class: " + ge.getClass());
System.out.println("isHeadless:" + ge.isHeadless());
}
}
当我没有标志在Linux中运行以下命令:
$ java GETest
class: class sun.awt.X11GraphicsEnvironment
isHeadless:false
当我在Linux中旗运行此:
$ java -Djava.awt.headless=true GETest
class: class sun.java2d.HeadlessGraphicsEnvironment
isHeadless:true
此外,如果我取消设置DISPLAY,并且在没有标志的情况下运行,我会得到以下异常:
$ unset DISPLAY
$ java -Djava.awt.headless GETest
Exception in thread "main" java.lang.InternalError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
at sun.awt.X11GraphicsEnvironment.access$100(X11GraphicsEnvironment.java:52)
...
如果我然后设置标志,我会得到与上面的isHeadless:true示例相同的输出。
你应该更全面地描述你的环境,这将有助于诊断你的问题。
错误发生在哪里?你能打印整个堆栈跟踪吗?这将有助于查明问题。 – 2009-11-06 14:20:37
applet在客户端机器上运行,应用服务器中的config不会影响小程序。你确定这个错误是在一个applet中,还是在服务器端(你是不是试图在服务器上执行applet代码?) – vickirk 2009-11-06 15:56:50