Kubuntu从20升级到22后无法启动Eclipse:eglQueryString未找到错误
Kubuntu 20升级到22后Eclipse启动失败(eglQueryString未找到)的解决方法
问题详情
Kubuntu从20版本升级到22版本后,Eclipse无法启动,报错:
eglQueryString() not found: /usr/bin/java: undefined symbol: eglQueryString
已尝试使用OpenJDK 21.0.8并下载最新2025-09版Eclipse,安装了libegl-mesa包后问题依旧,命令行日志如下:
WARNING: Using incubator modules: jdk.incubator.vector Nov 17, 2025 10:35:34 AM org.apache.aries.spifly.BaseActivator log INFO: Registered provider ch.qos.logback.classic.servlet.LogbackServletContainerInitializer of service jakarta.servlet.ServletContainerInitializer in bundle ch.qos.logback.classic Nov 17, 2025 10:35:34 AM org.apache.aries.spifly.BaseActivator log INFO: Registered provider ch.qos.logback.classic.spi.LogbackServiceProvider of service org.slf4j.spi.SLF4JServiceProvider in bundle ch.qos.logback.classic 10:35:36.579 [Start Level: Equinox Container: c7b75cfd-2f0f-4993-a552-7c03704af9a9] DEBUG org.eclipse.jgit.internal.util.ShutdownHook -- register org.eclipse.jgit.util.FS$FileStoreAttributes$$Lambda/0x00007773541d8620@288acf12 with shutdown hook 10:35:36.579 [Start Level: Equinox Container: c7b75cfd-2f0f-4993-a552-7c03704af9a9] DEBUG org.eclipse.jgit.internal.util.ShutdownHook -- register org.eclipse.jgit.util.FS$FileStoreAttributes$$Lambda/0x00007773541d8620@288acf12 with shutdown hook eglQueryString() not found: /usr/bin/java: undefined symbol: eglQueryString
解决步骤
1. 重装并修复Mesa EGL库
系统升级可能导致EGL库损坏或版本不兼容,执行以下命令修复:
sudo apt update sudo apt install --reinstall libegl-mesa0 libegl1-mesa libegl1-mesa-dev mesa-utils sudo ldconfig
2. 修改Eclipse启动参数,绕过图形库依赖
打开Eclipse安装目录下的eclipse.ini文件,在-vmargs段落添加以下参数之一:
- 禁用OpenGL渲染,强制使用软件渲染:
-Dswt.opengl=false -Dorg.eclipse.swt.internal.gtk.cairoGraphics=false - 指定EGL库的系统路径(根据实际路径调整,通常为
/usr/lib/x86_64-linux-gnu/):-Djava.library.path=/usr/lib/x86_64-linux-gnu/
3. 切换到兼容的JDK版本
OpenJDK 21在桌面图形库兼容性上可能存在问题,尝试切换到LTS版本OpenJDK 17:
sudo apt install openjdk-17-jdk
修改eclipse.ini中的-vm参数,指向JDK17的执行路径,例如:
-vm /usr/lib/jvm/java-17-openjdk-amd64/bin/java
4. 修复系统库链接
运行以下命令检查Java与EGL库的链接状态:
ldd /usr/bin/java | grep egl
如果无输出,说明链接异常,可手动创建软链接(假设libEGL.so位于/usr/lib/x86_64-linux-gnu/mesa/):
sudo ln -s /usr/lib/x86_64-linux-gnu/mesa/libEGL.so.1 /usr/lib/x86_64-linux-gnu/libEGL.so
内容的提问来源于stack exchange,提问作者steveflyer330
相关产品推荐
相关产品推荐

