You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring环境实例化RemoteWebDriver遇OpenTelemetry依赖冲突报错

解决Spring环境下RemoteWebDriver实例化的OpenTelemetry依赖冲突问题

问题根源

这个错误是Spring引入的OpenTelemetry依赖和Selenium内置的OpenTelemetry版本不兼容导致的。Spring(尤其是Spring Boot)默认会引入OpenTelemetry的自动配置组件,而Selenium内部也集成了OpenTelemetry用于链路追踪。当两者版本不一致时,JVM加载的io.opentelemetry.sdk.autoconfigure.spi.traces.SdkTracerProviderConfigurer接口来自Spring的依赖包,而Selenium的org.openqa.selenium.remote.tracing.opentelemetry.SeleniumSpanExporter实现的是自己包内的同名称接口(类加载器会把不同版本的同名称接口视为不同类型),最终触发ServiceConfigurationError。

无Spring的项目里没有额外的OpenTelemetry依赖,只加载Selenium自带的版本,所以不会出现冲突。

解决方案

方案1:排除Spring中的OpenTelemetry依赖

在你的Maven或Gradle配置中,排除Spring自动引入的OpenTelemetry相关依赖,让项目仅使用Selenium自带的版本:

Maven示例(pom.xml)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <exclusions>
        <exclusion>
            <groupId>io.opentelemetry</groupId>
            <artifactId>opentelemetry-sdk-autoconfigure</artifactId>
        </exclusion>
        <exclusion>
            <groupId>io.opentelemetry</groupId>
            <artifactId>opentelemetry-sdk-trace</artifactId>
        </exclusion>
        <!-- 若还有其他opentelemetry相关依赖,一并排除 -->
    </exclusions>
</dependency>

Gradle示例(build.gradle)

implementation('org.springframework.boot:spring-boot-starter') {
    exclude group: 'io.opentelemetry', module: 'opentelemetry-sdk-autoconfigure'
    exclude group: 'io.opentelemetry', module: 'opentelemetry-sdk-trace'
}

方案2:统一OpenTelemetry版本

先通过依赖树查询Selenium使用的OpenTelemetry版本:

# Maven
mvn dependency:tree | grep opentelemetry

# Gradle
./gradlew dependencies | grep opentelemetry

然后在项目中强制统一该版本,确保Spring和Selenium使用同一套OpenTelemetry组件:

Maven示例

<properties>
    <!-- 替换成你查到的Selenium对应的OpenTelemetry版本 -->
    <opentelemetry.version>1.28.0</opentelemetry.version>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>io.opentelemetry</groupId>
            <artifactId>opentelemetry-bom</artifactId>
            <version>${opentelemetry.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

方案3:禁用Spring的OpenTelemetry自动配置

如果你的项目不需要Spring的OpenTelemetry自动配置,可以直接在启动类中排除对应的自动配置类:

@SpringBootApplication(exclude = {OpenTelemetryAutoConfiguration.class})
public class YourSeleniumTestApplication {
    public static void main(String[] args) {
        SpringApplication.run(YourSeleniumTestApplication.class, args);
    }
}

内容的提问来源于stack exchange,提问作者Alex Smoke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 10:27:43