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

Liferay7.3集成Java版Analytics Data Client API遇grpc通道异常

Liferay 7.3集成Google Analytics Data Client API 解决grpc通道缺失异常

问题场景

在Liferay 7.3中集成Java版Google Analytics Data Client API时,调用BetaAnalyticsDataClient.create(...)方法触发异常,异常信息如下:

io.grpc.ManagedChannelProvider$ProviderNotFoundException: No functional channel service provider found. Try adding a dependency on the grpc-okhttp, grpc-netty, or grpc-netty-shaded artifact
at io.grpc.ManagedChannelProvider.provider(ManagedChannelProvider.java:45)
at io.grpc.ManagedChannelBuilder.forAddress(ManagedChannelBuilder.java:39)
at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.createSingleChannel(InstantiatingGrpcChannelProvider.java:351)
at com.google.api.gax.grpc.ChannelPool.(ChannelPool.java:105)
at com.google.api.gax.grpc.ChannelPool.create(ChannelPool.java:83)
at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.createChannel(InstantiatingGrpcChannelProvider.java:236)
at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.getTransportChannel(InstantiatingGrpcChannelProvider.java:230)
at com.google.api.gax.rpc.ClientContext.create(ClientContext.java:201)
at com.google.analytics.data.v1beta.stub.GrpcBetaAnalyticsDataStub.create(GrpcBetaAnalyticsDataStub.java:149)
at com.google.analytics.data.v1beta.stub.BetaAnalyticsDataStubSettings.createStub(BetaAnalyticsDataStubSettings.java:161)
at com.google.analytics.data.v1beta.BetaAnalyticsDataClient.(BetaAnalyticsDataClient.java:172)
at com.google.analytics.data.v1beta.BetaAnalyticsDataClient.create(BetaAnalyticsDataClient.java:154)

用户实现代码:

InputStream fileInputStream = GoogleAnalyticsReportsGA4Portlet.class.getResourceAsStream(KEY_FILE_LOCATION);
GoogleCredentials credential = GoogleCredentials.fromStream(fileInputStream);
BetaAnalyticsDataSettings betaAnalyticsDataSettings =
        BetaAnalyticsDataSettings.newBuilder()
                .setCredentialsProvider(FixedCredentialsProvider.create(credential))
                .build();

try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create(betaAnalyticsDataSettings)) {...}

解决方案

异常信息已经明确指出问题:项目缺少grpc的通道实现依赖。需要在项目依赖中添加以下任意一个grpc传输组件:

1. 添加grpc-okhttp依赖(适合轻量或Android场景)

<dependency>
    <groupId>io.grpc</groupId>
    <artifactId>grpc-okhttp</artifactId>
    <version>对应grpc版本号</version>
</dependency>

2. 添加grpc-netty依赖

<dependency>
    <groupId>io.grpc</groupId>
    <artifactId>grpc-netty</artifactId>
    <version>对应grpc版本号</version>
</dependency>

3. 添加grpc-netty-shaded依赖(规避netty版本冲突)

<dependency>
    <groupId>io.grpc</groupId>
    <artifactId>grpc-netty-shaded</artifactId>
    <version>对应grpc版本号</version>
</dependency>

额外注意事项

  • 确保grpc版本与Google Analytics Data Client API依赖的grpc版本兼容,建议使用客户端API自带的依赖版本,避免版本冲突。
  • 针对Liferay 7.3的OSGI环境,需保证依赖的bundle能被正确导入。如果使用Maven构建模块,可在bnd.bnd文件中添加对应的导入声明,或通过compileOnly+provided的依赖方式处理,确保Liferay容器能正确加载相关类。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 00:30:38