{"record":{"id":"cf4cdd07778ceb03","repo":"apereo/cas","slug":"current-java-version-javaversion-current-does","errorCode":null,"errorMessage":"Current Java version ${JavaVersion.current()} does not match required Java version ${requiredVersion}","messagePattern":"Current Java version (.+?) does not match required Java version (.+?)","errorType":"console","errorClass":"GradleException","httpStatus":null,"severity":"error","filePath":"build.gradle","lineNumber":324,"sourceCode":"\ntasks.register('tomcatVersion') {\n    description = \"Display current Apache Tomcat version\"\n    doLast {\n        println \"${tomcatVersion}\"\n    }\n}\n\ntasks.register('signingKey') {\n    description = \"Display CAS signing key id\"\n    doLast {\n        println \"Signing key: \" + project.findProperty(\"signing.keyId\")\n    }\n}\n\ntasks.register('verifyRequiredJavaVersion') {\n    def requiredVersion = JavaVersion.toVersion(project.targetCompatibility)\n    if (!JavaVersion.current().isCompatibleWith(requiredVersion)) {\n        throw new GradleException(\"Current Java version ${JavaVersion.current()} does not match required Java version ${requiredVersion}\")\n    }\n}\n\ndef projectModulesMetadataTaskRequested = CasBuildSettings.isTaskRequested(project, 'generateProjectModulesMetadata') ||\n    CasBuildSettings.isTaskRequested(project, 'publishProjectModulesMetadata')\nif (projectModulesMetadataTaskRequested) {\n    def modulesOutputFile = layout.buildDirectory.file('modules.json')\n    def projectVersion = version.toString().replaceAll('-SNAPSHOT', '')\n    def projectGroup = group.toString()\n    def moduleMetadataResults = CasBuildSettings.includedProjectPaths(project)\n        .findAll { projectPath -> projectPath != project.path }\n        .collectMany { projectPath ->\n            def moduleInfo = CasBuildSettings.projectModuleMetadata(project, projectPath)\n            if (!moduleInfo.publishMetadata) {\n                return []\n            }\n            def projectName = CasBuildSettings.projectNameFromPath(projectPath)\n            def metadata = new LinkedHashMap<>(moduleInfo.projectMetadata as Map)","sourceCodeStart":306,"sourceCodeEnd":342,"githubUrl":"https://github.com/apereo/cas/blob/e7288fc434b4f4505b8452e1a57e8fb3111bb863/build.gradle#L306-L342","documentation":"The verifyRequiredJavaVersion task in the root build.gradle compares JavaVersion.current() (the JVM running Gradle) against the required version derived from project.targetCompatibility (Java 25 for CAS) and throws GradleException on mismatch. It is a build-time guard so contributors don't compile CAS with an unsupported JDK.","triggerScenarios":"Running any Gradle task (e.g. ./gradlew build) with a JDK older than the required version (or a toolchain daemon pinned to an old JDK) after the task executes.","commonSituations":"Developer machine default JAVA_HOME points to JDK 17/21; IDE Gradle daemon uses an embedded JRE; CI runner image not updated to Java 25.","solutions":["Set JAVA_HOME to a Java 25 JDK before running Gradle (export JAVA_HOME=/path/to/jdk-25).","Update CI runner images / GitHub Actions setup-java to version 25.","Point the IDE/Gradle daemon JVM (org.gradle.java.home in gradle.properties or ~/.gradle/gradle.properties) at JDK 25.","Stop stale daemons (./gradlew --stop) after changing the JDK so they restart with the right version."],"exampleFix":"// before\nexport JAVA_HOME=/usr/lib/jvm/jdk-21\n// after\nexport JAVA_HOME=/usr/lib/jvm/jdk-25","handlingStrategy":"validation","validationCode":"// shell check before invoking gradle\n[ \"$JAVA_HOME\" ] && \"$JAVA_HOME/bin/java\" -version 2>&1 | grep -q 'version \"25' || echo \"JDK 25 required\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pin JAVA_HOME to a Java 25 JDK in shell profiles, IDE settings, and CI images.","Set org.gradle.java.home in gradle.properties for the daemon.","Run ./gradlew --stop after JDK changes to kill stale daemons."],"tags":["gradle","java-version","build","environment"],"backgroundTag":"incompatible-source-type","analyzedSha":"e7288fc434b4f4505b8452e1a57e8fb3111bb863","analyzedAt":"2026-09-08T15:39:16.015Z","contentChangedAt":"2026-09-08T15:39:16.015Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}