每当我尝试使用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
其他人有这个问题吗?我还要注意,即使只按一次该键,该错误消息也会多次发送。
答案 0 :(得分:1)
请按照以下步骤操作
Eclipse IDE仍然显示“不允许这样做。请在主线程中调用TIS / TSM !!!”但是键盘和鼠标事件都可以。
答案 1 :(得分:0)
此消息由Mac OS中的 Main Thread Checker 生成。诸如Robot
之类的活动在后台被压入该检查中。您可以禁用此检查并验证其是否有效。
在以下问题中阅读有关此内容的更多信息,