Camunda webapp not working after upgrading to Spring Boot 3

I’ve recently upgraded my Camunda application to use Spring Boot 3, but I’m encountering an issue with the Camunda webapp. When I try to access the Camunda cockpit, I’m getting the following error:

org.springframework.web.servlet.resource.NoResourceFoundException: No static resource camunda/app/cockpit/default

I’ve checked the application logs, and it seems that the Camunda webapp resources are not being found after the upgrade to Spring Boot 3.

Can someone help me troubleshoot this issue? What steps should I take to resolve this problem and get the Camunda webapp working again?

Any guidance or suggestions would be greatly appreciated.

This is the current version we are using for camunda

extra["camundaVersion"] = "7.21.0-alpha3"
extra["camundaWebApp"] = "3.4.4"
extra["camundaReactorCore"] = "1.2"
extra["camundaDataFormat"] = "1.22.0"

and we are using spring boot 3.2.0

Hi @Youssef_Agagg
It will be hard to help if you do not provide more details on your setup.
Camunda expect version, Spring Boot exact version, pom.xml(if you use it), etc.

Regards,
Alex

hello @Alex_Voloshyn
these is the current version we are using for Camunda

extra["camundaVersion"] = "7.21.0-alpha3"
extra["camundaWebApp"] = "3.4.4"
extra["camundaReactorCore"] = "1.2"
extra["camundaDataFormat"] = "1.22.0"

and we are using Spring Boot 3.2.0

Hello,
What do you use to build the project Gradle, Maven, or something else? Can you share the full dependencies file?

we are using Gradle
this is all dependencies
all version

extra["camundaVersion"] = "7.21.0-alpha3"
extra["camundaWebApp"] = "3.4.4"
extra["camundaReactorCore"] = "1.2"
extra["camundaDataFormat"] = "1.22.0"
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.jetbrains.kotlin.util.prefixIfNot

plugins {
    id("org.springframework.boot")
    id("io.spring.dependency-management")
    id("com.google.cloud.tools.jib")
    id("java")
    id("maven-publish")
    id("org.sonarqube") version "3.3"
    kotlin("jvm")
    kotlin("plugin.allopen")
    kotlin("plugin.spring")
}
sonarqube {
    properties {
        property("sonar.projectName", "sme-backoffice-workflow")
        property("sonar.projectKey", "com.bm.df.workflow")
        property("sonar.sourceEncoding", "UTF-8")
        property("sonar.test.exclusions", "src/test/**/*.java")
    }
}

val springCloudVersion: String by rootProject.extra


configurations {
    compileOnly {
        extendsFrom(configurations.annotationProcessor.get())
    }
}


dependencyManagement {
    imports {
        mavenBom("org.springframework.cloud:spring-cloud-dependencies:$springCloudVersion")
    }
}

dependencies {
 
    // Starters
    implementation("org.springframework.boot:spring-boot-starter")
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("org.springframework.boot:spring-boot-starter-actuator")
    implementation("org.springframework.boot:spring-boot-starter-validation")

    // Database
    implementation("org.springframework.boot:spring-boot-starter-data-jpa")
    implementation("org.springframework.boot:spring-boot-starter-data-redis")
    implementation("com.oracle.database.jdbc:ojdbc11:${rootProject.extra["oracleJDBC"]}")

    // Camunda
    implementation("org.camunda.bpm.springboot:camunda-bpm-spring-boot-starter:${rootProject.extra["camundaVersion"]}")
    implementation("org.camunda.bpm.springboot:camunda-bpm-spring-boot-starter-rest:${rootProject.extra["camundaVersion"]}")
    implementation("org.camunda.bpm.dmn:camunda-engine-dmn:${rootProject.extra["camundaVersion"]}")
    implementation("org.camunda.bpm.springboot:camunda-bpm-spring-boot-starter-webapp-ee:${rootProject.extra["camundaWebApp"]}")
    implementation("org.camunda.bpm.extension:camunda-bpm-reactor-core:${rootProject.extra["camundaReactorCore"]}")
    implementation("org.camunda.bpm:camunda-engine-plugin-spin:${rootProject.extra["camundaVersion"]}")
    implementation("org.camunda.spin:camunda-spin-dataformat-all:${rootProject.extra["camundaDataFormat"]}")
    implementation("org.camunda.bpm.identity:camunda-identity-ldap:${rootProject.extra["camundaVersion"]}")

    //ldap
    implementation("org.springframework.ldap:spring-ldap-core")
    implementation("com.unboundid:unboundid-ldapsdk")

    // DevTools
    developmentOnly("org.springframework.boot:spring-boot-devtools")

    // Project Lombok
    compileOnly("org.projectlombok:lombok:${rootProject.extra["lombok"]}")
    annotationProcessor("org.projectlombok:lombok:${rootProject.extra["lombok"]}")

    // Swagger UI
    implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:${rootProject.extra["springDoc"]}")

    //Cloud
    implementation("org.springframework.cloud:spring-cloud-starter-openfeign")

    // Aspect
    implementation("org.aspectj:aspectjweaver:${rootProject.extra["aspectJWeaver"]}")
    implementation("commons-io:commons-io:${rootProject.extra["commonsIO"]}")
    implementation("org.apache.commons:commons-lang3:${rootProject.extra["commonLang3"]}")

    implementation("jakarta.xml.bind:jakarta.xml.bind-api:${rootProject.extra["jakartaXml"]}")
    implementation("javax.xml.bind:jaxb-api:${rootProject.extra["javaxXml"]}")

    // Google Gson
    implementation("com.google.code.gson:gson:${rootProject.extra["gson"]}")

    // Kotlin
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin:${rootProject.extra["jacksonVersion"]}")

    implementation("org.springframework.security:spring-security-core:${rootProject.extra["springSecurityCore"]}")
    implementation("com.google.guava:guava:${rootProject.extra["guava"]}")
    implementation("org.bouncycastle:bcprov-jdk18on:${rootProject.extra["bouncyCastle"]}")
    implementation("org.apache.tomcat.embed:tomcat-embed-core:${rootProject.extra["tomcat"]}")
    implementation("org.apache.tomcat.embed:tomcat-embed-websocket:${rootProject.extra["tomcat"]}")
    implementation("ch.qos.logback:logback-classic:${rootProject.extra["logback"]}")
    implementation("ch.qos.logback:logback-core:${rootProject.extra["logback"]}")

    testImplementation("org.springframework.boot:spring-boot-starter-test")
    testImplementation("org.springframework.boot:spring-boot-starter-test")
    testCompileOnly("org.projectlombok:lombok:${rootProject.extra["lombok"]}")
    testAnnotationProcessor("org.projectlombok:lombok:${rootProject.extra["lombok"]}")
}

configurations.all{
    exclude(group = "commons-logging", module = "commons-logging")
}

tasks.withType<KotlinCompile> {
    kotlinOptions {
        freeCompilerArgs = listOf("-Xjsr305=strict")
        jvmTarget = "17"
    }
}

tasks.withType<Test> {
    useJUnitPlatform()
}