问题描述

场景需要使用到键盘事件

在使用springBoot创建Robot对象时出现错误:java.awt.AWTException: headless environment

解决方法

将springBoot启动类的

SpringApplication.run(Application.class, args);

改成:

SpringApplicationBuilder builder = new SpringApplicationBuilder(Application.class);
builder.headless(false).run(args);

原因:java.awt.headless 模式

Headless模式是系统的一种配置模式。在系统可能缺少显示设备、键盘或鼠标这些外设的情况下可以使用该模式。

经查询发现报错提示当前模式为无头模式,(无头模式就是允许程序在没有一些基本外设的情况下运行,其目的为减少服务器资源)而我的需求是需要模拟键盘输入,无头模式把我的模拟键盘给取消了。Spring Boot默认状态是开启无头模式的,所以需要关闭无头模式。

//修改启动类即可
@SpringBootApplication
public class SystemctlApplication {
	public static void main(String[] args) {
		SpringApplicationBuilder builder = new SpringApplicationBuilder(SystemctlApplication.class);
		//SpringApplication.run(SystemctlApplication.class, args);
		builder.headless(false)
		//.web(WebApplicationType.NONE)
		//.bannerMode(BannerMode.OFF)
		.run(args);
  }
}