java.awt.AWTException:java.awt.Robot.(Robot.java:94) 的无头环境 [重复]

Posted

技术标签:

【中文标题】java.awt.AWTException:java.awt.Robot.(Robot.java:94) 的无头环境 [重复]【英文标题】:java.awt.AWTException: headless environment at java.awt.Robot.(Robot.java:94) [duplicate] 【发布时间】:2014-06-22 17:31:12 【问题描述】:

我正在 servlet 中做屏幕录制应用程序。但它在 localhost 中使用 tomcat sever7x 正常工作。但是当我托管在网络服务器上时,它会显示这样的错误

java.awt.AWTException: headless environment     at java.awt.Robot.(Robot.java:94)

谁能帮帮我?谢谢。

【问题讨论】:

您找到解决方案了吗? @user3607151 这是一个巨大的xyproblem.info。上面链接的副本回答了 X。您尝试的解决方案(Y)绝不会起作用,原因很简单,因为在实际生产环境中,服务器机器(运行 Java 代码的地方)物理上不同 机器而不是客户端机器(网络浏览器运行的地方)。您基本上是在尝试获取附加到服务器计算机而不是客户端计算机的屏幕截图。但通常生产服务器没有附加任何屏幕。它们只是本地主机上的同一台机器。这就是为什么它似乎“工作”。 【参考方案1】:

发生此异常是因为您正在使用一些需要环境来支持图形的 API(如果说是简化的话)。为了解决问题,您必须摆脱使用需要图形支持的类,或者在非无头环境中运行它。尝试查看Robot.java 的第 94 行,了解 API 在无头环境中的抱怨。

您可能会发现这些链接很有用:

What does "headless" mean?

http://www.oracle.com/technetwork/articles/javase/headless-136834.html

【讨论】:

【参考方案2】:

这对我来说不是很清楚, 您是否要捕获服务器的屏幕? 当您使用 servlet 时?!

我认为这与服务器上的显示问题有关 因为大多数服务器没有 GUI(Gnome 或桌面)作为例如窗口

这就是你的问题

也可以看看这篇文章

Headless environment error in java.awt.Robot class with MAC OS

姜头的最新帖子

【讨论】:

感谢您的回复。我只需要在浏览器上捕获屏幕,而不是在服务器上。但是当我托管到 jsp 托管服务器时,它没有记录。你知道有 GUI 的服务器的任何名称吗..thanx【参考方案3】:

我在 Jenkins 上运行 Selenium 测试(配置为使用远程服务器)时遇到了这个问题。 mwe 的解决方案是在工作之前启动 Xvfb 插件:https://wiki.jenkins-ci.org/display/JENKINS/Xvfb+Plugin

【讨论】:

以上是关于java.awt.AWTException:java.awt.Robot.(Robot.java:94) 的无头环境 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

JAV所有开发公共代码

jav利用反射修改类的静态变量

jav的流行型

jav的流行型

解决报错SAXNotRecognizedException: Feature ‘http://jav

Jav文件压缩-InputStream转化为base64-Base64解码并生成图片