[英]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.