java.awt.robot在macos mojave下工作得很奇怪

eufgjt7s  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(269)

macos升级到mojave后,java应用程序使用java robot,在high sierra下工作绝对正常,但stars无法正常工作。症状有:
机器人按键;导致大约7个相同的错误,没有键入任何内容。
2019-02-03 19:27:52.324 java[928:31672]pid(928)/euid(501)正在非主线程环境中调用tis/tsm,错误:这是不允许的。请在主线程中调用tis/tsm!!!
如果我通过java命令行运行robot.mousemove,它可以正常工作;如果我在eclipse中运行同一个类,它就不工作。

public static void main( String[] arg) throws AWTException, InterruptedException {
   Robot robot;
   robot = new Robot();

    robot.waitForIdle();
    robot.keyPress(VK_N);
    robot.keyRelease(VK_N);

    robot.waitForIdle();
    robot.mouseMove(100, 100);
    Thread.sleep(500);
    robot.mouseMove(10, 10);
}

根据robot.mousemove在MacOSX中根本不起作用的建议,我已经将java和eclipse添加到security&privacy中,单击顶部的privacy选项卡,然后选择accessibility。它没有解决问题。而且,我看不出有什么不同。
我浏览了这个链接https://eclecticlight.co/2018/09/17/managing-mojaves-privacy-protection-privacy-controls/ 运行“tccutil reset appleevents”。但我没想到这个对话框会将这对应用程序添加到“系统首选项”的privacy=>automation部分
我的java是1.8.0\u191,x86\u64。
你知道如何让这些代码在MacOSMojave中工作吗?
致以最诚挚的问候,

atmip9wb

atmip9wb1#

不确定你是否已经找到了解决方案。如果没有,请按照以下步骤操作,
设置->安全和隐私
向下滚动至“辅助功能”
单击底部的锁定按钮并解锁安全和隐私首选项
单击“+”图标和您的程序(在我的例子中是eclipseide),然后再次尝试运行
ide仍然显示“这是不允许的。请在主线程中调用tis/tsm!!!”但是键盘和鼠标事件都可以工作。我也查了你的密码。

相关问题