代码之家  ›  专栏  ›  技术社区  ›  Vicky

如何通过java代码设置或导出显示变量?

  •  1
  • Vicky  · 技术社区  · 17 年前

    我们需要添加 export DISPLAY=:0.0 在tomcat的启动文件和批处理服务器的启动文件中。这是为了让java在Unix上看到X11 Display库并运行我们的applet。如果启动文件中没有此导出,小程序将抛出无头异常。

    虽然这种显式导出使javaapplet运行,但它会干扰服务器上运行的其他应用程序。我有办法做这个吗 导出显示=:0.0 从java代码中运行,而不是将其添加到启动文件中?如果可能的话,这是一个好方法吗?

    我已经尝试将系统属性设置为 -Djava.awt.headless=true ,但它不起作用。正如上面给出的链接 http://java.sun.com/developer/technicalArticles/J2SE/Desktop/headless/ 还说,设置headless=true只适用于Canvas、Panel等少数组件,但不适用于顶级组件。

    所以我觉得我唯一的选择就是使用 导出显示=:0.0 。这会使我的小程序在启动文件中设置时工作,但会给服务器中运行的其他应用程序带来问题。所以如果有人能帮我做 导出显示=:0.0 工作时,它不会干扰服务器中的其他应用程序。我想到的一种方法是通过代码导出显示。

    任何帮助都将不胜感激。

    3 回复  |  直到 15 年前
        1
  •  3
  •   Joshua DeWald    17 年前

    我相信你实际上可以设置系统属性 -Djava.awt.headless=true 这将允许访问图形库,而实际上不需要显示器。

    看见 http://java.sun.com/developer/technicalArticles/J2SE/Desktop/headless/ 了解更多信息。

        2
  •  1
  •   Yoni    17 年前

    从您的问题来看,您的配置似乎存在严重问题。 Tomcat应该 总是 能够在没有显示器的情况下运行服务器端。 小程序 总是 在浏览器中运行并从浏览器获取x11环境。applet的jar可以由tomcat、apache或其他东西提供,但这无关紧要。

    如果您的小程序与服务器通信,请确保服务器代码与小程序代码完全分开(将它们保存在单独的项目中),并且不使用任何awt代码。如果是这样(用于图像处理等),则使用jdewald所说的-Djava.awt.headless。

        3
  •  0
  •   Jack Leow    17 年前

    这对其他应用程序有何影响?您如何在启动脚本中定义环境变量?如果你正确定义了变量,它应该只影响由你的启动脚本启动的程序,即Tomcat和批处理服务器。

    此外,你最初的问题也不太合理。您是否在同一台机器上同时运行服务器和客户端(Tomcat和web浏览器)?