如何在Ubuntu命令行禁用Headless Java Mode运行Java GUI应用
解决Ubuntu命令行运行Java GUI程序的HeadlessException问题
问题根源
你遇到的java.awt.HeadlessException确实是因为安装了Headless版JDK——这类JDK为适配轻量后台运行场景,移除了AWT/Swing等GUI相关依赖库,无法启动图形界面程序。而IntelliJ能正常运行,是因为IDE自带完整的Headful JDK环境,或自动配置了适配GUI的运行参数。
解决方法
方法一:替换为完整Headful版JDK(长期稳妥方案)
- 卸载当前Headless JDK
执行以下命令(将*替换为你实际安装的JDK版本号,比如17、11,也可直接用通配符匹配所有Headless版本):sudo apt remove openjdk-*-jdk-headless - 安装完整的Headful JDK
对应版本安装命令示例(根据程序需求选择对应版本):sudo apt install openjdk-17-jdk - 验证与测试
先确认JDK版本:
再重新运行GUI程序:java -versionjava -jar TIcTacToe.jar
方法二:临时禁用Headless模式(仅适配非纯Headless JDK)
若不想更换JDK,可尝试在运行jar时强制关闭Headless模式,但前提是系统本身具备X11图形环境,且JDK只是默认启用Headless而非纯Headless版本:
java -Djava.awt.headless=false -jar TIcTacToe.jar
内容的提问来源于stack exchange,提问作者Honza Píka
相关产品推荐
相关产品推荐

