java绘图在ubuntu报错

把JRT网站部署到ubuntu桌面系统上,开始没测试绘图部分功能,只试了连PostGreSql部分正常。后面试了生成位图部分发现报错。

报下面错误:

(ColorModel.java:220)\n\tat java.desktop/java.awt.image.BufferedImage.(BufferedImage.java:286)\n\tat facade.ashx.ashJRTPrintDrawView.QryPrintDrawImgs(ashJRTPrintDrawView.java:166)\n\t... 29 more\n"}" alt="报告" style="margin-bottom:10px;"/>

"message":"Exception java.lang.UnsatisfiedLinkError: /share/jdk-17.0.9/lib/libawt_xawt.so: libXtst.so.6: cannot open shared object file: No such file or directory

查资料说是缺少绘图包,安装之后还是不行。后面查到是因为后台运行没有绘图设备所以绘图报错,web最好禁用绘图设备,也就是设置java运行参数为-Djava.awt.headless=true模式。

什么是headless模式?

Headless是指服务器的

无显示设备状态

(缺少显示器、键盘、鼠标)

例:应用集群、数据库集群等,它们一般没有显示器、键盘、鼠标,都是通过网络远程操作。

D. AWT与headless模式

AWT是Java构建GUI应用的标准API接口,且Java自带2套实现类,一套供标准模式使用(显示设备、驱动可用),另一套供headless模式使用(显示设备、驱动不可用);

Button、Checkbox、Choice、Dialog、FileDialog、Label、List、Menu、MenuBar、MenuItem、PopupMenu、Scrollbar、ScrollPane、TextArea、TextField、Window

注:这些组件,只能运行在"标准模式"下,Headless模式中使用会报错;

Canvas、Fonts、Colors、Images

注:这些组件不仅在"标准模式"下可用,它们的Headless版本也可以在Headless模式下正常使用;

通常B/S型Web应用运行于无显示设备、驱动的服务器端环境中,但是有使用AWT绘图接口的可能(例如:用Images、Fonts接口生成图片验证码);所以给Tomcat、Weblogic附加参数-Djava.awt.headless=true,强制使用Headless版本的AWT实现类,就能避免图形环境缺失所导致的程序出错;

给tomcat的各个启动地方都加上即可,这样就不用担心无显示环境绘图包缺少X环境了

相关推荐
高冷的上官梓芸8 分钟前
【A15】默认关闭屏保
java
爱学习的小囧8 分钟前
嵌套式 ESXi 8.x/9.0 虚拟设备下载与实战指南
java·linux·运维·服务器·虚拟化
SCBAiotAigc8 分钟前
2026.4.13:vim编程简单配置
人工智能·ubuntu·vim·具身智能
前端 贾公子11 分钟前
uniapp中@input修改input内容不生效 | 过滤赋值无效 | 连续非法字符不更新的问题
开发语言·前端·javascript
五阿哥永琪13 分钟前
从零读懂 Java 函数式接口:Function、Consumer、Supplier、Predicate
java·开发语言
533_15 分钟前
[vxe-table] 表头:点击出现输入框
android·java·javascript
天若有情67315 分钟前
颠覆C++传统玩法!Property属性与伪类,开辟静态语言新维度
java·c++·servlet
写不来代码的草莓熊15 分钟前
el-date-picker ,自定义输入数字自动转换显示yyyy-mm-dd HH:mm:ss格式 【仅双日历 datetimerange专用】
开发语言·前端·javascript
硅基导游19 分钟前
linux系统与进程内存使用情况探测
java·linux·运维
I疯子23 分钟前
2026-04-13 打卡第 6 天
开发语言·python