Linux tomcat GraphicsEnvironment 启动卡主

本文介绍了一个在Linux环境下使用Tomcat部署应用程序时遇到的问题:启动过程中执行GraphicsEnvironment.getLocalGraphicsEnvironment()方法时出现卡顿现象。通过设置JAVA_OPTS=-Djava.awt.headless=true成功解决了该问题。

项目应用服务器tomcat启动正常,在linux启动执行到GraphicsEnvironment.getLocalGraphicsEnvironment()卡主不动,最终在tomcat中加配置

JAVA_OPTS="-Djava.awt.headless=true"解决问题

参见https://www.oschina.net/translate/using-headless-mode-in-java-se

### 解决方案 在 Linux 环境下启动 Java 程序时出现 `java.awt.HeadlessException: No X11 DISPLAY variable was set` 错误,通常是因为程序尝试执行需要图形界面的操作,但当前环境未配置 X11 显示器或未正确设置 `DISPLAY` 环境变量。以下是解决此问题的详细方法: #### 方法一:设置 `DISPLAY` 环境变量 如果需要在远程服务器上运行 Java 程序并显示图形界面,则需要确保正确设置了 `DISPLAY` 环境变量。例如,假设机地址为 `192.168.126.1`,可以使用以下命令设置 `DISPLAY` 变量[^1]: ```bash export DISPLAY=192.168.126.1:0.0 ``` 此外,还需确保 SSH 客户端启用了 X11 转发功能。可以通过以下命令检查和启用 X11 转发[^3]: ```bash cat /etc/ssh/sshd_config | grep X11Forwarding ``` 如果输出为 `X11Forwarding no`,则需要将其更改为 `X11Forwarding yes` 并重启 SSH 服务: ```bash sudo sed -i 's/X11Forwarding no/X11Forwarding yes/g' /etc/ssh/sshd_config sudo systemctl restart sshd ``` #### 方法二:以无头模式(Headless Mode)运行 Java 程序 如果 Java 程序不需要图形界面支持,可以通过启用无头模式来避免该错误。无头模式允许 Java 在没有图形界面的情况下运行。可以在启动 Java 程序时添加 `-Djava.awt.headless=true` 参数[^2]: ```bash java -Djava.awt.headless=true -jar your_program.jar ``` 此参数会告诉 Java 运行时不依赖 X11 显示器。 #### 方法三:检查并安装必要的 X11 工具 如果上述两种方法均无效,可能是因为系统缺少必要的 X11 工具或库。可以尝试安装以下软件包(以 Ubuntu 为例): ```bash sudo apt-get update sudo apt-get install xauth xorg xvfb ``` 对于其他发行版,请根据具体情况进行调整。 --- ### 示例代码 以下是一个简单的示例,展示如何以无头模式运行 Java 程序: ```java public class HeadlessTest { public static void main(String[] args) { if (java.awt.GraphicsEnvironment.isHeadless()) { System.out.println("Running in headless mode."); } else { System.out.println("Not running in headless mode."); } } } ``` 编译并运行此程序时,可以添加 `-Djava.awt.headless=true` 参数以验证其行为。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值