java.awt.Robot在macOS Mojave下的表现奇怪

3
自从macOS升级到Mojave版本后,使用Java Robot的Java应用程序在High Sierra下完全正常,但现在开始出现工作异常的情况。 症状包括:
  • robot.keyPress(VK_N); causes the about 7 the same errors and did not type anything.

    2019-02-03 19:27:52.324 java[928:31672] pid(928)/euid(501) is calling TIS/TSM in non-main thread environment, ERROR : This is is NOT allowed. Please call TIS/TSM in main thread!!!

  • robot.mouseMove works fine if I run it via Java command line, and doesn't work if I run the same class in 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在Mac OS X上完全不起作用,我已将Java和Eclipse添加到“安全性与隐私”中,单击向顶部的“隐私”选项卡,然后选择“辅助功能”。但它没有解决问题。此外,我看不到任何区别。
我通过此链接https://eclecticlight.co/2018/09/17/managing-mojaves-privacy-protection-privacy-controls/,运行了“tccutil reset AppleEvents”。但我没有得到预期的对话框,将一对应用程序添加到“系统偏好设置”中的“隐私”=>“自动化”部分。
我的Java版本是1.8.0_191,x86_64。
有什么想法可以让该代码在Mac OS Mojave中工作吗?
最好的问候,

你能解决这个问题吗?@Gene Kastyshyn - Mr.O
1个回答

2
你不确定是否已经找到解决方案。如果没有,请按照以下步骤操作:
  1. 设置->安全性和隐私
  2. 向下滚动至"辅助功能"
  3. 单击底部的锁定按钮并解锁安全性和隐私偏好设置
  4. 点击"+"图标,添加你的程序(例如Eclipse IDE),然后尝试再次运行
虽然IDE仍然显示"This is NOT allowed. Please call TIS/TSM in main thread!!!",但键盘和鼠标事件都能正常工作。我也检查了你的代码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接