Maven依赖冲突致Xtext语言服务器启动异常排查与解决
Xtext语言服务器依赖冲突调试问题解决
问题现象
基于Maven构建的Xtext语言服务器项目,使用SocketServerLauncher.java启动调试时,抛出如下错误:
java.lang.NoSuchMethodError: 'boolean org.eclipse.xtext.xbase.lib.ArrayExtensions.contains(java.lang.Object[], java.lang.Object)'
排查与尝试过程
- 版本匹配问题定位:
ArrayExtensions.contains()方法在org.eclipse.xtext.xbase.lib2.20版本才引入,但当时项目中org.eclipse.lsp4j版本为0.9.0,该版本依赖的xbase.lib是2.19.0,版本不兼容导致方法找不到。 - 尝试升级lsp4j至0.21.0,随即出现guava和xtext.xbase.lib相关的
NoClassDefFoundError,于是手动添加org.eclipse.xtext.xbase.lib2.32.0依赖。 - 新问题出现:运行时提示找不到
org/eclipse/lsp4j/SemanticHighlightingParams类,该类在lsp4j 0.9.0版本后已被废弃。通过mvn dependency:tree检查发现存在lsp4j 0.10.0与0.21.0的版本冲突,添加依赖排除后问题依旧,且Effective POM中仍保留旧版本依赖。
最终解决方案
将org.eclipse.lsp4j版本回退至0.9.0,同时将org.eclipse.xtext.xbase.lib版本降至2.26.0,服务器成功启动并输出正常日志。
内容的提问来源于stack exchange,提问作者harsh
相关产品推荐
相关产品推荐

