我们在扩展javax.swing.JApplet的应用程序中构建了applet.最近我们在linux环境中运行时遇到了X11GraphicsEnvironment的问题,通过在run.conf文件的JAVA_OPTS中设置-Djava.awt.headless = true来浏览各个论坛我们遇到了这个问题的解决方案.
但这会导致HeadlessException.
最初我们的客户告诉我们使用命令ssh -X在终端中启动应用服务器,它曾经工作正常,但现在它需要被丢弃.
提前致谢...
您确定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());
}
}
Run Code Online (Sandbox Code Playgroud)
当我在没有标志的Linux中运行它时:
$ java GETest
class: class sun.awt.X11GraphicsEnvironment
isHeadless:false
Run Code Online (Sandbox Code Playgroud)
当我在Linux中使用标志运行它时:
$ java -Djava.awt.headless=true GETest
class: class sun.java2d.HeadlessGraphicsEnvironment
isHeadless:true
Run Code Online (Sandbox Code Playgroud)
此外,如果我取消设置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)
...
Run Code Online (Sandbox Code Playgroud)
如果我然后设置了标志,我得到的输出与我在isHeadless中的输出相同:上面的例子.
您应该更全面地描述您的环境,这将有助于诊断您的问题.
| 归档时间: |
|
| 查看次数: |
17174 次 |
| 最近记录: |