您确定java.awt.headless属性正确进入您的环境吗?您的applet是否打算出于某种原因在无头环境中运行?这是一个快速示例应用程序,演示了该标志的作用:
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中的输出相同:上面的例子。
您应该更全面地描述您的环境,这将有助于诊断您的问题。