Search code examples
javagoogle-analyticsgoogle-analytics-api

What are maven dependencies for a java program (jdk 1.8) which uses Google Data Analytics API (ga4) to get analytics report?


I am trying to use the new API of Google Analytics Data (g4). I wanna switch from universal API into G4, the problem is that in Java 8 there are errors in dependencies while I am importing them all. It is working well in Java 18!! but not in java 8. The documentation and sample codes are Here. I have added to my maven dependency :

<dependency>
    <groupId>com.google.auth</groupId>
    <artifactId>google-auth-library-oauth2-http</artifactId>
    <version>1.11.0</version>
</dependency>


 <dependency>
    <groupId>com.google.analytics</groupId>
    <artifactId>google-analytics-data</artifactId>
    <version>0.14.4</version>
</dependency>
 
<dependency>
    <groupId>com.google.auth</groupId>
    <artifactId>google-auth-library-credentials</artifactId>
    <version>1.11.0</version>
</dependency>

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>31.1-jre</version>
</dependency>
 
<dependency>
    <groupId>com.google.api</groupId>
    <artifactId>api-common</artifactId>
    <version>2.2.1</version>
</dependency>
 
<dependency>
    <groupId>io.grpc</groupId>
    <artifactId>grpc-alts</artifactId>
    <version>1.49.0</version>
    <scope>runtime</scope>
</dependency>
 
<dependency>
    <groupId>com.google.api</groupId>
    <artifactId>gax-grpc</artifactId>
    <version>2.19.0</version>
</dependency>
<dependency>
    <groupId>com.google.api</groupId>
    <artifactId>gax</artifactId>
    <version>2.19.0</version>
</dependency>
 
<dependency>
    <groupId>com.google.api.grpc</groupId>
    <artifactId>grpc-google-longrunning-v1</artifactId>
    <version>0.1.24</version>
</dependency>

and the error is

 Exception in thread "main" java.lang.NoClassDefFoundError: com/google/longrunning/GetOperationRequest
        at com.google.longrunning.stub.GrpcOperationsStub.<clinit>(GrpcOperationsStub.java:68)
        at com.google.analytics.data.v1beta.stub.GrpcBetaAnalyticsDataStub.<init>(GrpcBetaAnalyticsDataStub.java:185)
        at com.google.analytics.data.v1beta.stub.GrpcBetaAnalyticsDataStub.<init>(GrpcBetaAnalyticsDataStub.java:171)
        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.<init>(BetaAnalyticsDataClient.java:163)
        at com.google.analytics.data.v1beta.BetaAnalyticsDataClient.create(BetaAnalyticsDataClient.java:145)
        at com.google.report.ga4.Ga4DataAnalytics.main(Ga4DataAnalytics.java:42)
Caused by: java.lang.ClassNotFoundException: com.google.longrunning.GetOperationRequest
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
        ... 8 more
[Exit 1]

Any help is appreciated.


Solution

  • Finally I found out the answer. the dependencies are as follows:

    <dependency>
        <groupId>com.google.analytics</groupId>
        <artifactId>google-analytics-data</artifactId>
        <version>0.14.5</version>
    </dependency>
     
    <dependency>
        <groupId>com.google.auth</groupId>
        <artifactId>google-auth-library-credentials</artifactId>
        <version>1.11.0</version>
    </dependency>
    
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>31.1-jre</version>
    </dependency>
     
    <dependency>
        <groupId>com.google.api</groupId>
        <artifactId>api-common</artifactId>
        <version>2.2.1</version>
    </dependency>
     
    <dependency>
        <groupId>io.grpc</groupId>
        <artifactId>grpc-alts</artifactId>
        <version>1.49.0</version>
        <scope>runtime</scope>
    </dependency>
     
    <dependency>
        <groupId>com.google.api</groupId>
        <artifactId>gax-grpc</artifactId>
        <version>2.19.0</version>
    </dependency>
    <dependency>
        <groupId>com.google.api</groupId>
        <artifactId>gax</artifactId>
        <version>2.19.0</version>
    </dependency>
     
    <dependency>
        <groupId>com.google.api.grpc</groupId>
        <artifactId>grpc-google-longrunning-v1</artifactId>
        <version>0.1.24</version>
    </dependency>
     
    <dependency>
        <groupId>io.grpc</groupId>
        <artifactId>grpc-stub</artifactId>
        <version>1.49.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/io.grpc/grpc-protobuf -->
    <dependency>
        <groupId>io.grpc</groupId>
        <artifactId>grpc-protobuf</artifactId>
        <version>1.49.0</version>
    </dependency>
    
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>failureaccess</artifactId>
        <version>1.0.1</version>
    </dependency>
    <!-- Thanks for using https://jar-download.com -->
    <dependency>
        <groupId>io.grpc</groupId>
        <artifactId>grpc-core</artifactId>
        <version>1.33.0</version>
    </dependency>
    <!-- Thanks for using https://jar-download.com -->
    <dependency>
        <groupId>io.grpc</groupId>
        <artifactId>grpc-grpclb</artifactId>
        <version>1.49.0</version>
    </dependency>
    <!-- Thanks for using https://jar-download.com -->
    <dependency>
        <groupId>io.perfmark</groupId>
        <artifactId>perfmark-api</artifactId>
        <version>0.21.0</version>
    </dependency>
    

    plus, I added before the main:

    static {
        LoadBalancerRegistry.getDefaultRegistry().register( new GrpclbLoadBalancerProvider());
    }