could not connect to session bus://bin/dbus-lauch terminated abnormally without any error message

本文解决了一个在Ubuntu系统中配置JDK环境变量时遇到的问题:无法连接到会话总线。文章详细介绍了两种解决方法,包括检查PATH环境变量配置及如何正确设置JDK环境。

转载请注明出处:http://blog.youkuaiyun.com/droyon/article/details/8952428

最近经历了离职,换工作,找房子等一系列的事情,感慨颇多。同时这段时间没有写博客。

今天第一天入职,新公司在硬件上很给力,配备了全新的电脑,显示器等。在配置ubuntu   jdk环境时,出现了如下问题:

could not connect to session 

bus://bin/dbus-lauch terminated abnormally without any error message

出现上述问题,说明你在配置PATH环境变量上出现了些问题。

可以从以下两步,进行检验

1、进入ubuntu(CTRL+ALT+F1)命令界面,成功登陆后,看看ls(显示当前文件夹下的所有文件)命令是否还能够使用,如果不能够正常发挥作用,说明环境变量PATH配置错误。在命令界面内把PATH的配置地方注掉就可以正常登陆图形桌面了。

export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_43
#export PATH=${JAVA_HOME}/bin:$PATH
注掉能够使PATH改变的地方。

2、如果ubuntu任何系统命令(ls)可以使用,说明你的环境变量配置没有错误。

为配置ubuntu下JDK环境变量配置,可以修改/etc/envrionment文件,在这个文件内配置PATH,会导致ubunt下所有的用户都得到相应的配置。如果出现上述问题,那么尝试,将PATH配置在用户主目录下的 .bashrc文件内。看是否还存在上述问题。

你提供的 `ps aux | grep dbus-daemon` 输出非常关键,我们来**逐行分析并精准定位问题根源**。 --- ## 🔍 关键观察 ```bash starying 700 ... /usr/bin/dbus-daemon --syslog-only --fork ... --session starying 711 ... /usr/bin/dbus-daemon --config-file=...at-spi2/accessibility.conf ... --address=unix:path=/mnt/wslg/runtime-dir/at-spi/bus_0 starying 2450 ... /usr/bin/dbus-daemon --syslog-only --fork ... --session starying 2456 ... /usr/bin/dbus-daemon --config-file=...at-spi2/accessibility.conf ... --address=unix:path=/mnt/wslg/runtime-dir/at-spi/bus172.23.112.1_0 ``` ### ✅ 发现真相: - **系统中已经有两个完整的 AT-SPI D-Bus 实例在运行!** - 它们是由 WSLg 自动启动的(注意路径 `/mnt/wslg/...`) - PID 711 和 2456 是 `at-spi-bus-launcher` 启动的辅助功能总线(A11Y Bus) > 💡 这说明:**WSL 已经为你自动初始化了 AT-SPI 总线**,你不需要再手动运行 `/usr/libexec/at-spi-bus-launcher`! --- ## ❌ 错误原因解释 当你执行: ```bash eval $(/usr/libexec/at-spi-bus-launcher --launch-immediately) ``` 它试图: 1. 创建一个新的 AT-SPI D-Bus 总线 2. 绑定到默认 socket 路径 3. 但该路径可能已被占用或无法访问 而你的环境里已经有两个 AT-SPI 总线在运行了,所以它失败并报错: ``` Failed to launch bus: Failed to connect to session bus ``` 但实际上 —— **不是连接失败,而是“重复启动”被拒绝或配置冲突**。 --- ## ✅ 正确做法:使用 WSLg 提供的现有 A11Y 总线 WSLg(Windows Subsystem for Linux GUI)已经为 GUI 应用准备好了所有必要的无障碍支持。 你需要做的只是: ### ✔️ 设置正确的环境变量 ```bash export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf):0 export WAYLAND_DISPLAY=wayland-0 export XDG_RUNTIME_DIR=/run/user/$(id -u) # 关键:告诉应用复用 WSLg 的 AT-SPI 总线 export AT_SPI_BUS_ADDRESS=unix:path=/mnt/wslg/runtime-dir/at-spi/bus_${DISPLAY/:/_} ``` 📌 解释: - `${DISPLAY/:/_}` 把 `:0` 变成 `_0` - 所以最终路径是:`/mnt/wslg/runtime-dir/at-spi/bus_0` - 这正是 PID 711 使用的地址! --- ### 🧪 验证是否有效 运行: ```bash export AT_SPI_BUS_ADDRESS=unix:path=/mnt/wslg/runtime-dir/at-spi/bus_0 echo $AT_SPI_BUS_ADDRESS ``` 然后启动你的 AppImage: ```bash ./squashfs-root/AppRun ``` ✅ 大概率可以直接运行成功! --- ## 🛠️ 推荐完整启动脚本(适配 WSLg) ```bash nano ~/start-gui.sh ``` 内容如下: ```bash #!/bin/bash # 设置显示相关变量 export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf):0 export WAYLAND_DISPLAY=wayland-0 export XDG_RUNTIME_DIR=/run/user/$(id -u) # 禁用本地 AT-SPI 再次启动(避免冲突) export NO_AT_BRIDGE=1 # 可选:防止 WebKitGTK 渲染异常 export WEBKIT_DISABLE_COMPOSITING_MODE=1 # 指向 WSLg 内置的 AT-SPI 总线(关键!) export AT_SPI_BUS_ADDRESS=unix:path=/mnt/wslg/runtime-dir/at-spi/bus_${DISPLAY/:/_} # 可选验证 if [ -S "/mnt/wslg/runtime-dir/at-spi/bus_${DISPLAY/:/_}" ]; then echo "✅ AT-SPI socket exists: /mnt/wslg/runtime-dir/at-spi/bus_${DISPLAY/:/_}" else echo "⚠️ Warning: AT-SPI socket not found at expected path." fi echo "🎉 Environment ready. Launching application..." echo " DISPLAY=$DISPLAY" echo " AT_SPI_BUS_ADDRESS=$AT_SPI_BUS_ADDRESS" # 启动应用 exec ./squashfs-root/AppRun ``` 赋予执行权限并运行: ```bash chmod +x ~/start-gui.sh ~/start-gui.sh ``` --- ## ✅ 成功标志 如果一切正常,你应该看到: - GTK 应用窗口出现在 Windows 桌面- 无 `at-spi-bus-launcher` 报错 - 不需要自己启动任何 D-Bus 或 AT-SPI 守护进程 --- ## ❗总结:不要再手动启动 `at-spi-bus-launcher`! | 项目 | 在 WSL 中的正确做法 | |------|---------------------| | `dbus-daemon --session` | WSL 自动管理,无需干预 | | `at-spi-bus-launcher` | ❌ 不要运行!WSLg 已内置 | | `AT_SPI_BUS_ADDRESS` | ✅ 设为 `/mnt/wslg/runtime-dir/at-spi/bus_0` | | `NO_AT_BRIDGE=1` | ✅ 建议设置,避免冗余桥接 | --- ##
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hailushijie

您的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值