Java.awt.Robot keyPress和keyRelease根本不起作用

时间:2018-12-23 03:37:28

标签: java awt robot

每当我尝试使用java.awt.Robot keyPress或keyRelease时,都会给我错误消息pid(25807)/euid(501) is calling TIS/TSM in non-main thread environment, ERROR : This is NOT allowed. Please call TIS/TSM in main thread!!!。无论我使代码多么简单,它都会不断显示此错误消息。这是我的代码:

package com;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;

public class JavaRobotExample {
    public static void main(String[] args) throws AWTException {
        Robot robot = new Robot();

        robot.keyPress(KeyEvent.VK_A);
        robot.keyRelease(KeyEvent.VK_A);
    }
}

这是我发现的教科书示例,但仍然给出该错误消息。我一直在寻找很长时间,试图找出问题所在。我在MacBook Pro上使用MacOS Mojave 10.14.2,并且已为Eclipse(用于编译代码)提供了隐私访问权限。这是我为此使用的所有内容的屏幕截图: My code

其他人有这个问题吗?我还要注意,即使只按一次该键,该错误消息也会多次发送。

2 个答案:

答案 0 :(得分:1)

请按照以下步骤操作

  1. 设置->安全和隐私
  2. 向下滚动到“辅助功能”
  3. 单击底部的锁定按钮,然后解锁安全性和 隐私偏好设置
  4. 单击“ +”图标和您的程序(在我的情况下为Eclipse IDE),然后尝试 再次运行

Eclipse IDE仍然显示“不允许这样做。请在主线程中调用TIS / TSM !!!”但是键盘和鼠标事件都可以。

答案 1 :(得分:0)

此消息由Mac OS中的 Main Thread Checker 生成。诸如Robot之类的活动在后台被压入该检查中。您可以禁用此检查并验证其是否有效。

在以下问题中阅读有关此内容的更多信息,