每当我尝试使用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
还有其他人有这个问题吗?我还应该注意,错误消息会多次发送,即使它只按一次键。
请按照以下步骤操作,
Eclipse IDE仍然显示“这是不允许的。请在主线程中调用TIS / TSM !!!”但键盘和鼠标事件都有效。
此消息由MacOS中的Main Thread Checker生成。在此检查中应排除Robot
按键背景等活动。您可以禁用此检查并验证其是否有效。
在以下问题中阅读更多相关信息,