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

时间:2009-02-07 04:06:33

标签: java

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

虽然这种显式导出使java applet运行,但它会破坏服务器上运行的其他应用程序。有没有办法让我在java代码中运行export DISPLAY=:0.0而不是将其添加到启动文件中?如果有可能,这会是一个好方法吗?

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

所以我觉得唯一的选择就是使用export DISPLAY=:0.0。这使得我的applet在启动文件中设置时工作,但会导致服务器中运行的其他应用程序出现问题。因此,如果有人可以帮助我使export DISPLAY=:0.0工作,使其不会干扰服务器中的其他应用程序。我认为的一种方法是通过代码导出显示。

任何帮助都将受到高度赞赏。

3 个答案:

答案 0 :(得分:3)

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

有关详细信息,请参阅http://java.sun.com/developer/technicalArticles/J2SE/Desktop/headless/

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

另外,你原来的问题并没有真正加起来。您是否在同一台计算机上运行服务器和客户端(Tomcat和Web浏览器)?