Introduction
When Jenkins plugins are updated, especially core plugins or plugins with shared dependencies, version incompatibilities can cause ClassCastException errors during startup. This happens when a plugin expects a class from a dependency plugin but receives an incompatible version, preventing Jenkins from fully initializing.
Symptoms
- Jenkins fails to start after plugin update, showing a blank or error page
- Jenkins logs show
java.lang.ClassCastExceptionduring plugin initialization - Specific plugin mentioned in the stack trace as the source of the incompatibility
- Jenkins UI shows
Jenkins is starting upindefinitely - Error message:
java.lang.ClassCastException: class X cannot be cast to class Y
Common Causes
- Plugin updated without updating its dependency plugins to compatible versions
- Two plugins requiring different versions of a shared dependency
- Jenkins core version incompatible with the updated plugin version
- Plugin update performed selectively without updating the full plugin set
- Incompatible plugin version installed from an external update center
Step-by-Step Fix
- 1.Identify the failing plugin from the stack trace: Find the root cause.
- 2.```bash
- 3.grep -i "ClassCastException|Failed Loading plugin" /var/log/jenkins/jenkins.log | tail -20
- 4.
` - 5.Disable the problematic plugin temporarily: Allow Jenkins to start.
- 6.```bash
- 7.# Navigate to Jenkins plugins directory
- 8.cd /var/lib/jenkins/plugins
- 9.# Create a .jpi.disabled file for the problematic plugin
- 10.touch problematic-plugin.jpi.disabled
- 11.# Restart Jenkins
- 12.systemctl restart jenkins
- 13.
` - 14.Update all dependent plugins to compatible versions: Fix the version mismatch.
- 15.
` - 16.# Jenkins UI: Manage Jenkins > Manage Plugins > Updates tab
- 17.# Update all plugins that share dependencies with the failing plugin
- 18.# Or use the Jenkins CLI
- 19.java -jar jenkins-cli.jar -s https://jenkins.example.com/ install-plugin plugin-name -deploy -restart
- 20.
` - 21.Check plugin compatibility matrix: Verify version compatibility.
- 22.```bash
- 23.# Check Jenkins wiki for plugin compatibility
- 24.# https://plugins.jenkins.io/plugin-name/
- 25.# Look for "Dependencies" section and required versions
- 26.
` - 27.Verify Jenkins starts cleanly after plugin updates: Confirm all plugins load.
- 28.```bash
- 29.systemctl status jenkins
- 30.# Check Jenkins UI is accessible
- 31.curl -s -o /dev/null -w "%{http_code}" https://jenkins.example.com/
- 32.# Should return 200
- 33.
`
Prevention
- Update all plugins together rather than individually to maintain compatibility
- Test plugin updates in a staging Jenkins instance before production
- Pin plugin versions in infrastructure-as-code configurations
- Review plugin release notes for breaking changes before updating
- Maintain a plugin inventory with version numbers for rollback purposes
- Use Jenkins Configuration as Code (JCasC) to version-control plugin configurations