【发布时间】:2014-03-18 16:46:57
【问题描述】:
我正在尝试使用 java.awt.Robot 类在虚拟机中进行测试。如果我在我的主机中测试它,一切都会按预期工作,但是当我在虚拟机中运行相同的程序时,什么都没有发生,也没有错误/异常。我曾尝试在不同计算机上运行 Windows XP 或 Windows 7 的虚拟机内部,但从未成功。
我在机器上测试的代码非常简单:
try
{
final Robot robot = new Robot();
robot.mouseMove(500, 500);
}
catch (AWTException e)
{
e.printStackTrace();
}
当我运行它时,程序刚刚结束,鼠标不动。机器人类不在虚拟机中工作吗?如果没有,是否有另一种方法来模拟鼠标移动/点击?你有没有试过在虚拟机中使用这个类,如果成功了,你的设置是什么?
【问题讨论】:
-
鉴于您安装了正确的 java 等,VM 中没有什么不同。VM 本质上不知道它是一个 VM(通常,至少对于大多数 Windows VM 不知道它是 VM 的版本)。大多数 Windows 虚拟机都在 HVM 模式下运行,这意味着他们认为自己在裸机上运行。所以,我敢打赌,你的设置中还有其他问题。
-
@Leo OP 不应该需要这样的东西来让它工作。很明显他的虚拟机设置不正确。这或多或少是一个可能应该在 SuperUser 或 ServerFault 上的问题。 Java 和 AWT 本质上将在任何系统上运行大致相同,只要 Java 设置正确。对于 VM,OP 需要确保他正确安装了 vm 的工具/驱动程序,并且屏幕分辨率大于他试图将鼠标移入的 500x500。
-
感谢您的cmets,经过更多测试,我终于找到了问题所在。该程序实际上在 VM 中运行,我们只是看不到鼠标光标移动。 (如果我将鼠标移动到按钮的坐标然后模拟鼠标按下,我们可以看到按钮被按下但光标停留在其原始位置。)
标签: java virtual-machine awtrobot