JiuyeXD's Blog
九叶
九叶博主

越努力 越幸运

登录
夜间

SpringBoot Robot java.awt.AWTException: headless environment 错误

1. 问题

在使用Robot来模拟键盘事件时,启动报错

java.awt.AWTException: headless environment
	at java.awt.Robot.<init>(Robot.java:91)
	at ro.qwq.script.utils.RobotUtil.aut_mobs(RobotUtil.java:18)
	at ro.qwq.script.controller.TestController.testKeyInput(TestController.java:21)
...

2. 分析

headless模式是在缺少显示屏、键盘或者鼠标时的系统配置。

java.awt.Robot, java.awt.toolkitjava.awt.graphicsenvironment类中有许多方法, 除了对字体、图形和打印的操作外还可以调用显示器、键盘和鼠标的方法。

但是有一些类中,比如CanvasPanel还有keyPress等方法,可以在headless模式下执行。

3. 解决

将springboot启动类的

    public static void main(String[] args) {
        SpringApplication.run(ScriptApplication.class, args);
    }

改为:

    public static void main(String[] args) {
        SpringApplicationBuilder builder = new SpringApplicationBuilder(ScriptApplication.class);
        builder.headless(false).run(args);
    }

这个时候就可以启动并且使用headless模式下的方法了

image.png

THE END