繁体   English   中英

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

[英]How to set or export display variable through java code?

我们需要在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工作,使其不会干扰服务器中的其他应用程序。 我认为的一种方法是通过代码导出显示。

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM