Selenium4测试配置OpenTelemetry Jaeger Exporter遇类未找到错误
正确配置OpenTelemetry + Jaeger 用于Selenium 4测试
一、修正Maven依赖配置
之前的问题核心是缺少OpenTelemetry自动配置的关键依赖,且alpha版本的日志SDK和核心版本存在兼容性问题。直接替换成以下统一版本的依赖:
<!-- OpenTelemetry API 核心包 --> <dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-api</artifactId> <version>1.23.1</version> </dependency> <!-- OpenTelemetry SDK 核心实现 --> <dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-sdk</artifactId> <version>1.23.1</version> </dependency> <!-- 自动配置SDK(解决初始化时的类缺失问题) --> <dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-sdk-autoconfigure</artifactId> <version>1.23.1</version> </dependency> <!-- Jaeger追踪导出器 --> <dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-exporter-jaeger</artifactId> <version>1.23.1</version> </dependency>
二、优化系统属性配置
废弃JAEGER_SERVICE_NAME,统一使用OpenTelemetry标准配置项,避免冲突:
// 指定追踪导出器为Jaeger System.setProperty("otel.traces.exporter", "jaeger"); // Jaeger gRPC端点(默认就是14250,可根据实际修改) System.setProperty("otel.exporter.jaeger.endpoint", "http://localhost:14250"); // 设置服务标识(OTel标准属性) System.setProperty("otel.resource.attributes", "service.name=selenium-java-try");
三、初始化OpenTelemetry SDK
必须在测试代码启动时初始化自动配置的SDK,否则所有配置不会生效:
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk; public class SeleniumOtelTest { public static void main(String[] args) { // 初始化OTel SDK,自动读取系统属性完成配置 AutoConfiguredOpenTelemetrySdk.initialize(); // 启动Selenium测试逻辑 // WebDriver driver = new ChromeDriver(); // ... 测试代码 } }
问题根源解释
之前触发NoClassDefFoundError的原因:
- 未引入
opentelemetry-sdk-autoconfigure依赖,自动配置构建器需要日志SDK相关类,但缺少完整的自动配置包支持 - 使用了
opentelemetry-sdk-logs的alpha版本,该版本类结构与稳定版核心SDK不兼容,导致自动初始化时找不到对应类
内容的提问来源于stack exchange,提问作者Rob Audenaerde
相关产品推荐
相关产品推荐

