【问题标题】:java.awt.HeadlessException - Applet not displayedjava.awt.HeadlessException - Applet 未显示
【发布时间】:2010-10-01 11:55:58
【问题描述】:

我在 HP Unix 上使用 Tomcat 5.5.23、JDK 1.5。我们有一个应用程序,当从 tomcat 调用时会启动一个小程序。在 JDK 1.4 之前它工作正常。但是现在我们已经迁移到 JDK 1.5 并且小程序无法启动。抛出的异常是 - java.awt.HeadlessException: 没有设置 X11 DISPLAY 变量,但是这个程序执行了一个需要它的操作。

然后我将 JAVA_OPTS="-Djava.awt.headless=true" 添加到 catalina.sh 文件中。但我仍然得到相同的无头异常,但这次没有 X11 显示消息。

任何帮助将不胜感激。

【问题讨论】:

    标签: java tomcat applet


    【解决方案1】:

    奇怪..您正在尝试在 tomcat 中运行一个小程序(我假设您正在谈论 java.awt.Applet 的子类)?通常这不起作用,因为没有显示小程序的显示器。

    假设您不希望小程序显示在任何地方并且您只想以编程方式执行它的一部分,您可以通过使用虚拟 X 服务器(例如 Xvfb 或 Xvnc)来获得。在运行 tomcat 的主机上运行 Xvfb 或 Xvnc 后,您可能会尝试在 tomcat 启动脚本中设置 DISPLAY 以使用虚拟 X 服务器的显示。

    【讨论】:

    • +1 因为这似乎是 Vicky 承认解决问题的答案。
    【解决方案2】:
    -Djava.awt.headless=false
    

    在您的 Tomcat 启动脚本中添加上述内容。它将工作 100%

    【讨论】:

    • 在tomcat启动脚本中,我要在哪一行添加这个?
    • 我添加了它并得到了一个例外,如java.lang.InternalError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable. 对此有什么建议吗?
    【解决方案3】:

    您可能在 Java 代码中使用了一些无法在无头系统上运行的东西,例如图形组件(Swing 对象、图像等)。其中一些组件不是由 Java 直接处理,而是由底层平台(Windows 内核本身或 Unix 上的 X-Window 服务器)处理。这样可以提高应用程序的整体性能。

    所以现在的问题是,如果它可以在 Java 1.4 上运行,为什么它不能在 1.5 上运行?我敢打赌,考虑到自 Java 1.2 以来 Swing 随着时间的推移而获得的性能提升,Sun 已将一些图形对象的管理转移到操作系统级别以提高性能。所以如果你不能坚持1.4,那么你应该修改你的代码。

    good article 将帮助您了解如何修改您的应用程序以使其对无头友好。

    【讨论】:

      【解决方案4】:

      Applet 将很难在服务器端运行。它们被设计为在容器内运行,例如 Web 浏览器。最有可能抛出异常是因为小程序试图绘制它的 GUI——而服务器对此不提供支持。我很惊讶它在 JDK 1.4 中有效——我不知道这两个版本之间发生了什么变化会影响到这一点。

      【讨论】:

        【解决方案5】:

        您可能还必须安装 x11 库,或者至少明确导出它们的路径。

        /usr/X11R6/lib

        【讨论】:

          【解决方案6】:
          1. 使用您喜欢的文本浏览器打开 $CATALINA_HOME/bin/startup.sh 文件
          2. 在文件开头粘贴export CATALINA_OPTS="$CATALINA_OPTS -Djava.awt.headless=false"这一行
          3. 保存并关闭文件
          4. 重启Tomcat

          【讨论】:

            【解决方案7】:

            在具有数据库访问权限的 Spring Boot 中,当您指定星号:**** 作为用户名和密码时,它会尝试提示用户输入用户名和密码(您没看错),如果出现此问题,它将抛出此 HeadlessException这不是一个 gui 应用程序。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2016-03-17
              • 1970-01-01
              • 2017-01-28
              • 2016-04-19
              • 1970-01-01
              • 1970-01-01
              • 2012-03-12
              相关资源
              最近更新 更多