最近在做毕设的时候遇到的,因为之前实在另一个独立项目中启动的摄像头,然后在移植到SpringBoot中报错java.awt.HeadlessException。
错误日志如下:
java.awt.HeadlessException
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:204)
at java.awt.Window.<init>(Window.java:536)
at java.awt.Frame.<init>(Frame.java:420)
at javax.swing.JFrame.<init>(JFrame.java:233)
at org.bytedeco.javacv.CanvasFrame.<init>(CanvasFrame.java:124)
at org.bytedeco.javacv.CanvasFrame.<init>(CanvasFrame.java:121)
错误分析
从错误日志中可以看到HeadlessException是项目开启了Headless模式,在这种模式下系统就会缺少其他设备的支持,比如:显示设备、键盘、鼠标等外设。在我的项目中就是摄像头设备支持。Headless模式在服务端是很常用的,因为大多数服务器就是运行在没有前述设备支持的情况下。
解决方案:
关闭Headless模式:在VM option中添加语句
-Djava.awt.headless=false\
注意:若是要部署到不具有响应外设支持的服务器上,则需要使用计算能力模拟出能力,或者使用远程支持。