how to fix a ClassCastException in a Stash Plugin

ClassCastException in stash user interface

error message in stash user interface caused by ClassCastException

Have you ever run into ClassCastException while coding a Stash plugin?

I did several times enjoying the error widget on the right. There were several approaches to fix this including digging deep into the maven dependency tree and comparing dependencies and versions.

[INFO] [talledLocalContainer] java.lang.ClassCastException: 
 info.lotharschulz.stash.MyCheck cannot be cast to com.atlassian.stash.scm.pull.MergeRequestCheck
[INFO] [talledLocalContainer] at com.atlassian.stash.scm.pull.MergeRequestCheckModuleDescriptor.
 getModule( ~[stash-spi-3.3.0.jar:na]
[INFO] [talledLocalContainer] at com.atlassian.stash.internal.pull.DefaultMergeRequestCheckService.
 check( ~[stash-service-impl-3.3.0.jar:na]

Finally, the fix was to make sure the class doing the check (MyCheck in my sample) follows 2 rules:

  1. implements com.atlassian.stash.scm.pull.MergeRequestCheck
  2. is referenced in atlassian-plugin.xml within a merge-ckeck xml tag using the class property

(Unfortunately I used other tags like component initially.)

<atlassian-plugin key="${project.groupId}.${project.artifactId}" name="${}" plugins-version="2">
        <description>${project.description}</description> ...
    </plugin-info> ...
    <merge-check key="MyCheck" class="info.lotharschulz.stash.MyCheck" />

Lothar Schulz

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.