google-cloud-platformgoogle-cloud-runbitbucket-pipelinesmaven-jib

ClassNotFoundException - when building the image & push it to GCR using jib-maven-plugin in BitBucket pipeline


I am getting the below error in my GCP Cloud Run service:

Error: Could not find or load main class com.sdas.demo.sd.Application
Caused by: java.lang.ClassNotFoundException: com.sdas.demo.sd.Application

What I was doing:

  1. I have a spring boot application where I used jib-maven-plugin. In BitBucket pipeline, I was executing the below command:

    mvn clean compile com.google.cloud.tools:jib-maven-plugin:3.1.4:build -Dimage=eu.gcr.io/sdas-demo-dev/temp-service

  2. After that deploying this GCR image to Cloud Run using gcloud command from BitBucket pipeline. This deployment failed with the error that 'Could not load main class'.

But if I run the mvn clean compile com.google.cloud.tools:jib-maven-plugin:3.1.4:build -Dimage=eu.gcr.io/sdas-demo-dev/temp-service from my computer git bash for the same spring boot application code and then deploy it to Cloud Run (via gcloud command or via console or via pipeline); it's deployed successfully.

I used 'mainClass' tag under jib-maven-plugin in pom.xml. But still it is unable to find or load the main class.

Can anyone help how to identify the problem? Is this a classpath issue or environment issue?


Solution

  • Issue sorted now.

    Root cause:

    Solution: Renamed the directory as 'java' and then everything is working as expected.