Redhat 8.4下Webswing部署Java Swing Web应用组件存在但不可见问题求助
RedHat 8.4 运行Webswing/Swing canvas类Web应用的必备依赖
- 基础X11扩展依赖
除已安装的xorg、Xvfb、X11核心库外,还需补充以下组件:- X11扩展包:
libXextlibXtstlibXrenderlibXi - 字体库:
fontconfigdejavu-sans-fontsdejavu-serif-fonts,若应用包含中文内容还需安装wqy-microhei-fonts等中文字体包,字体缺失会直接导致canvas渲染为空 - 图形渲染库:
mesa-libGLmesa-libEGL,Webswing 2.4依赖OpenGL软渲染能力,RHEL8默认预装的mesa版本若不兼容会引发渲染异常
- X11扩展包:
- Java运行环境依赖
- 不要使用JRE的headless版本,OpenJDK环境需安装
java-1.8.0-openjdk完整包,而非java-1.8.0-openjdk-headless,后者缺少AWT/Swing图形渲染必需的组件 - 应用启动参数需显式添加
-Djava.awt.headless=false,即使配置了Xvfb也需要关闭headless模式
- 不要使用JRE的headless版本,OpenJDK环境需安装
- Webswing 2.4专属依赖
- 手动安装
libpng12兼容包,RHEL8默认不再预装该库,但Webswing 2.4的canvas编码逻辑强依赖libpng12 - Xvfb启动时需指定24位色深,推荐启动命令为
Xvfb :1 -screen 0 1920x1080x24,色深低于24位会导致Webswing的canvas渲染输出异常
- 手动安装
可落地的排查思路
- 验证Xvfb运行状态:执行
xrandr -display :1(替换为你配置的DISPLAY变量对应值)确认Xvfb窗口正常可用,再执行xeyes -display :1测试图形程序能否正常输出到Xvfb,先排除X服务本身的问题 - 对比依赖差异:找一台能正常运行该软件的Ubuntu设备,执行
ldd $WEBSWING_HOME/lib/*.so输出所有Webswing依赖的系统库,再到RHEL8.4上执行相同命令,逐一安装缺失的依赖包 - 开启Webswing调试日志:在Webswing启动配置文件中将日志级别调整为DEBUG,重点筛选
canvasrenderawtswing相关的日志内容,默认INFO级别通常不会打印渲染类的异常信息 - 浏览器端排查:打开浏览器控制台,查看Console标签是否有JS报错,Network标签查看canvas相关的资源请求是否正常,Performance标签录制一次登录后的渲染过程,确认是后端没有输出渲染数据还是前端渲染失败
- 验证浏览器兼容性:你当前使用的Chrome 94版本发布时间晚于Webswing 2.4的发布时间,可尝试用Chrome 80及更早版本测试,排查高版本浏览器对旧版Webswing的canvas API兼容性问题
- 排查SELinux权限限制:临时执行
setenforce 0关闭SELinux后重启应用测试,RHEL默认的SELinux策略可能会阻止Webswing进程访问Xvfb或者图形渲染相关的系统资源,导致无渲染输出
内容的提问来源于stack exchange,提问作者stormdrain
相关产品推荐
相关产品推荐

