My Validator throws a java.lang.LinkageError when I try to add it to a workflow

I’ve been trying to create a validtor for my extension but I keep running into problems. I think I’m importing something wrong because I keep getting the error java.lang.LinkageError on the AbstractDescriptor class.

Could someone help figure out what I’m doing wrong?

ValidatorFactory.java

public class ValidatorFactory extends AbstractWorkflowPluginFactory implements WorkflowPluginValidatorFactory
{
    protected void getVelocityParamsForInput(Map velocityParams) {}

    protected void getVelocityParamsForEdit(Map velocityParams, AbstractDescriptor descriptor) {}

    protected void getVelocityParamsForView(Map velocityParams, AbstractDescriptor descriptor) {}

    public Map getDescriptorParams(Map validatorParams)
    {
        // Process The map
        return Maps.newHashMap();
    }
}

Validator.java

public class Validator implements Validator
{
    private final Repository repository;

    public Validator(Repository repository) {
        this.repository = repository;
    }

    public void validate(Map transientVars, Map args, PropertySet ps) throws InvalidInputException {
        Issue issue = (Issue) transientVars.get("issue");

        Boolean status = repository.allCompleted(issue.getKey());

        if (status){
            throw new InvalidInputException("Not eveything is done");

        }
    }
}

POM

<dependencies>
        <dependency>
            <groupId>com.atlassian.jira</groupId>
            <artifactId>jira-api</artifactId>
            <version>${jira.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.plugin</groupId>
            <artifactId>atlassian-spring-scanner-annotation</artifactId>
            <version>${atlassian.spring.scanner.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
            <scope>provided</scope>
        </dependency>
        <!-- WIRED TEST RUNNER DEPENDENCIES -->
        <dependency>
            <groupId>com.atlassian.plugins</groupId>
            <artifactId>atlassian-plugins-osgi-testrunner</artifactId>
            <version>${plugin.testrunner.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>javax.ws.rs</groupId>
            <artifactId>jsr311-api</artifactId>
            <version>1.1.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.2.2-atlassian-1</version>
        </dependency>
        <dependency>
            <groupId>com.atlassian.sal</groupId>
            <artifactId>sal-api</artifactId>
            <version>3.0.2</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.4</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.plugins.rest</groupId>
            <artifactId>atlassian-rest-common</artifactId>
            <version>1.0.2</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.activeobjects</groupId>
            <artifactId>activeobjects-plugin</artifactId>
            <version>${ao.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.google.collections</groupId>
            <artifactId>google-collections</artifactId>
            <version>1.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.templaterenderer</groupId>
            <artifactId>atlassian-template-renderer-api</artifactId>
            <version>2.0.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.4</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.annotations</groupId>
            <artifactId>atlassian-annotations</artifactId>
            <version>1.1.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>osworkflow</groupId>
            <artifactId>osworkflow</artifactId>
            <version>2.8.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>opensymphony</groupId>
            <artifactId>propertyset</artifactId>
            <version>1.5</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>com.atlassian.maven.plugins</groupId>
                <artifactId>maven-jira-plugin</artifactId>
                <version>${amps.version}</version>
                <extensions>true</extensions>
                <configuration>
                    <productVersion>${jira.version}</productVersion>
                    <productDataVersion>${jira.version}</productDataVersion>
                    <productDataPath>${project.basedir}/src/test/resources/generated-test-resources.zip</productDataPath>
                    <applications>
                        <application>
                            <applicationKey>jira-servicedesk</applicationKey>
                            <version>${jira.servicedesk.application.version}</version>
                        </application>
                    </applications>
                    <enableQuickReload>true</enableQuickReload>
                    <enableFastdev>false</enableFastdev>
                    <!-- See here for an explanation of default instructions: -->
                    <!-- https://developer.atlassian.com/docs/advanced-topics/configuration-of-instructions-in-atlassian-plugins -->
                    <instructions>
                        <Atlassian-Plugin-Key>${atlassian.plugin.key}</Atlassian-Plugin-Key>
                        <Export-Package>tig.jira.extension.tigChecklistExtension.api,</Export-Package>
                        <Import-Package>org.springframework.osgi.*;resolution:="optional", org.eclipse.gemini.blueprint.*;resolution:="optional", avax.ws.rs*;version="[1,2)", javax.servlet*;version="2.5", javax.xml.bind*;version="[2.1,3)", *;version="0";resolution:=optional, *</Import-Package>
                        <Spring-Context>*</Spring-Context>
                    </instructions>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.atlassian.plugin</groupId>
                <artifactId>atlassian-spring-scanner-maven-plugin</artifactId>
                <version>${atlassian.spring.scanner.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>atlassian-spring-scanner</goal>
                        </goals>
                        <phase>process-classes</phase>
                    </execution>
                </executions>
                <configuration>
                    <scannedDependencies>
                        <dependency>
                            <groupId>com.atlassian.plugin</groupId>
                            <artifactId>atlassian-spring-scanner-external-jar</artifactId>
                        </dependency>
                    </scannedDependencies>
                    <verbose>false</verbose>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <properties>
        <jira.version>7.9.2</jira.version>
        <amps.version>6.3.15</amps.version>
        <plugin.testrunner.version>1.2.3</plugin.testrunner.version>
        <jira.servicedesk.application.version>3.12.2</jira.servicedesk.application.version>
        <atlassian.spring.scanner.version>1.2.13</atlassian.spring.scanner.version>
        <!-- This key is used to keep the consistency between the key in atlassian-plugin.xml and the key to generate bundle. -->
        <atlassian.plugin.key>${project.groupId}.${project.artifactId}</atlassian.plugin.key>
        <!-- TestKit version 6.x for JIRA 6.x -->
        <testkit.version>6.3.11</testkit.version>
        <ao.version>1.2.3</ao.version>
    </properties>
</project>

I’ve added the two dependencies below to my POM because I couldn’t get the required classes to import. But I think I need something else because this keeps failing to.

<dependency>
            <groupId>osworkflow</groupId>
            <artifactId>osworkflow</artifactId>
            <version>2.8.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>opensymphony</groupId>
            <artifactId>propertyset</artifactId>
            <version>1.5</version>
            <scope>provided</scope>
        </dependency>

@daniel you don’t happen to be able to tell me what I’m missing here? You’ve helped me in the past with similar issues.

Can you a mvn dependency:tree and paste the output in here. Also what’s the full stack trace you’re getting?

Sure and thank you for your time.

Here is the mvn dependency:tree output:

] ± com.atlassian.jira:jira-api:jar:7.9.2:provided
[INFO] | ± com.atlassian.ofbiz:entityengine-share:jar:1.3.10:provided
[INFO] | | - xerces:xercesImpl:jar:2.4.0:provided
[INFO] | ± com.atlassian.ofbiz:entityengine:jar:1.3.10:provided
[INFO] | | - jta:jta:jar:1.0.1:provided
[INFO] | ± com.atlassian.collectors:atlassian-collectors-util:jar:1.1:provided
[INFO] | ± opensymphony:webwork:jar:1.4-atlassian-30:provided
[INFO] | | - com.atlassian.html:atlassian-html-encoder:jar:1.4:provided
[INFO] | ± webwork:pell-multipart-request:jar:1.31.0:provided
[INFO] | ± com.atlassian.core:atlassian-core:jar:5.0.8:provided
[INFO] | | ± dom4j:dom4j:jar:1.4:provided
[INFO] | | | ± xml-apis:xml-apis:jar:1.0.b2:provided
[INFO] | | | ± jaxen:jaxen:jar:1.0-FCS:provided
[INFO] | | | ± saxpath:saxpath:jar:1.0-FCS:provided
[INFO] | | | ± msv:msv:jar:20020414:provided
[INFO] | | | ± relaxngDatatype:relaxngDatatype:jar:20020414:provided
[INFO] | | | - isorelax:isorelax:jar:20020414:provided
[INFO] | | - com.atlassian.image:atlassian-image-consumer:jar:1.0.1:provided
[INFO] | ± com.atlassian.core:atlassian-core-user:jar:5.0.8:provided
[INFO] | ± com.atlassian.core:atlassian-core-thumbnail:jar:5.0.8:provided
[INFO] | | ± com.twelvemonkeys.imageio:imageio-jpeg:jar:3.2:provided
[INFO] | | | ± com.twelvemonkeys.imageio:imageio-core:jar:3.2:provided
[INFO] | | | ± com.twelvemonkeys.imageio:imageio-metadata:jar:3.2:provided
[INFO] | | | ± com.twelvemonkeys.common:common-lang:jar:3.2:provided
[INFO] | | | ± com.twelvemonkeys.common:common-io:jar:3.2:provided
[INFO] | | | - com.twelvemonkeys.common:common-image:jar:3.2:provided
[INFO] | | - com.twelvemonkeys.imageio:imageio-tiff:jar:3.2:provided
[INFO] | ± com.atlassian.extras:atlassian-extras:jar:3.2:provided
[INFO] | | - commons-codec:commons-codec:jar:1.3:provided
[INFO] | ± com.atlassian.velocity:atlassian-velocity:jar:1.3:provided
[INFO] | | ± opensymphony:oscore:jar:2.2.7:provided
[INFO] | | - org.apache.velocity:velocity:jar:1.6.4:provided
[INFO] | ± com.atlassian.cache:atlassian-cache-api:jar:3.1.0:provided
[INFO] | | ± com.atlassian.util.concurrent:atlassian-util-concurrent:jar:0.0.12:provided
[INFO] | | - com.atlassian.instrumentation:atlassian-instrumentation-core:jar:2.2.2:provided
[INFO] | ± com.atlassian.beehive:beehive-api:jar:1.3.0:provided
[INFO] | ± com.atlassian.tenancy:atlassian-tenancy-api:jar:1.4.0:provided
[INFO] | | - com.atlassian.event:atlassian-event:jar:2.3.2:provided
[INFO] | ± com.atlassian.upgrade:upgrade-task-framework-api:jar:2.0.2:provided
[INFO] | ± com.atlassian.crowd:embedded-crowd-api:jar:2.10.2-rc04:provided
[INFO] | ± com.google.guava:guava:jar:18.0:provided
[INFO] | ± com.atlassian.fugue:fugue:jar:2.6.0:provided
[INFO] | ± org.codehaus.jackson:jackson-core-asl:jar:1.9.13-atlassian-1:provided
[INFO] | ± org.codehaus.jackson:jackson-mapper-asl:jar:1.9.13-atlassian-1:provided
[INFO] | ± javax.mail:javax.mail-api:jar:1.5.6:provided
[INFO] | ± com.sun.mail:javax.mail:jar:1.5.6:provided
[INFO] | ± com.atlassian.mail:atlassian-mail:jar:2.8.6:provided
[INFO] | | ± commons-beanutils:commons-beanutils:jar:1.6.1:provided
[INFO] | | - commons-digester:commons-digester:jar:1.4.1:provided
[INFO] | ± oro:oro:jar:2.0.7:provided
[INFO] | ± com.atlassian.threadlocal:atlassian-threadlocal:jar:1.3:provided
[INFO] | ± com.atlassian.applinks:applinks-api:jar:5.4.4:provided
[INFO] | ± com.google.javascript:closure-compiler:jar:v20151216:provided
[INFO] | ± com.atlassian.velocity.htmlsafe:velocity-htmlsafe:jar:1.4:provided
[INFO] | | - commons-pool:commons-pool:jar:1.5.4:provided
[INFO] | ± com.atlassian.plugins:atlassian-plugins-api:jar:4.5.0:provided
[INFO] | ± com.atlassian.plugins:atlassian-plugins-webfragment:jar:4.1.0:provided
[INFO] | ± com.atlassian.plugins:atlassian-plugins-webfragment-api:jar:4.1.0:provided
[INFO] | ± com.atlassian.ozymandias:atlassian-plugin-point-safety:jar:0.10:provided
[INFO] | ± jfree:jfreechart:jar:1.0.13:provided
[INFO] | ± com.atlassian.plugins:atlassian-plugins-webresource:jar:3.5.41:provided
[INFO] | | ± com.atlassian.plugins:atlassian-plugins-webresource-spi:jar:3.5.41:provided
[INFO] | | ± com.atlassian.plugins:atlassian-plugins-webresource-api:jar:3.5.41:provided
[INFO] | | ± org.tuckey:urlrewritefilter:jar:4.0.4:provided
[INFO] | | - com.atlassian.sourcemap:sourcemap:jar:1.7.6:provided
[INFO] | ± com.atlassian.plugins:atlassian-plugins-webresource-compiler-gcc:jar:3.5.41:provided
[INFO] | ± jfree:jcommon:jar:1.0.8:provided
[INFO] | ± com.atlassian.gadgets:atlassian-gadgets-api:jar:4.2.27:provided
[INFO] | ± com.atlassian.johnson:atlassian-johnson-core:jar:3.4.0:provided
[INFO] | | - com.atlassian.plugins:atlassian-plugins-servlet:jar:3.2.8:provided
[INFO] | ± joda-time:joda-time:jar:2.8.2:provided
[INFO] | ± commons-lang:commons-lang:jar:2.6:provided
[INFO] | ± commons-io:commons-io:jar:2.1:provided
[INFO] | ± commons-httpclient:commons-httpclient:jar:3.1-atlassian-2:provided
[INFO] | ± log4j:log4j:jar:1.2.16:provided
[INFO] | ± org.slf4j:slf4j-api:jar:1.7.9:provided
[INFO] | ± com.atlassian.profiling:atlassian-profiling:jar:1.9:provided
[INFO] | ± com.atlassian.scheduler:atlassian-scheduler-api:jar:1.7.0:provided
[INFO] | ± com.atlassian.analytics:analytics-api:jar:5.6.0:provided
[INFO] | ± javax.servlet:javax.servlet-api:jar:3.0.1:provided
[INFO] | ± com.atlassian.application:atlassian-application-api:jar:1.2:provided
[INFO] | - javax.validation:validation-api:jar:1.1.0.Final:provided
[INFO] ± junit:junit:jar:4.10:test
[INFO] | - org.hamcrest:hamcrest-core:jar:1.1:test
[INFO] ± com.atlassian.plugin:atlassian-spring-scanner-annotation:jar:1.2.13:provided
[INFO] ± javax.inject:javax.inject:jar:1:provided
[INFO] ± com.atlassian.plugins:atlassian-plugins-osgi-testrunner:jar:1.2.3:test
[INFO] | ± org.apache.wink:wink-client:jar:1.1.3-incubating:test
[INFO] | | ± org.apache.wink:wink-common:jar:1.1.3-incubating:test
[INFO] | | | - org.apache.geronimo.specs:geronimo-annotation_1.1_spec:jar:1.0:test
[INFO] | | - com.sun.xml.bind:jaxb-impl:jar:2.2.1.1:provided
[INFO] | - com.atlassian.upm:upm-api:jar:2.15:test
[INFO] ± javax.ws.rs:jsr311-api:jar:1.1.1:provided
[INFO] ± com.google.code.gson:gson:jar:2.2.2-atlassian-1:compile
[INFO] ± com.atlassian.sal:sal-api:jar:3.0.2:provided
[INFO] ± javax.servlet:servlet-api:jar:2.4:provided
[INFO] ± javax.xml.bind:jaxb-api:jar:2.1:provided
[INFO] | ± javax.xml.stream:stax-api:jar:1.0-2:provided
[INFO] | - javax.activation:activation:jar:1.1:provided
[INFO] ± com.atlassian.plugins.rest:atlassian-rest-common:jar:1.0.2:provided
[INFO] | ± com.atlassian.plugins.rest:com.atlassian.jersey-library:pom:1.0.2:provided
[INFO] | | ± com.sun.jersey:jersey-server:jar:1.0.3:provided
[INFO] | | | ± com.sun.jersey:jersey-core:jar:1.0.3:provided
[INFO] | | | - asm:asm:jar:3.1:provided
[INFO] | | ± com.sun.jersey:jersey-json:jar:1.0.3:provided
[INFO] | | | ± org.codehaus.jettison:jettison:jar:1.0.1:provided
[INFO] | | | - org.codehaus.jackson:jackson-asl:jar:0.9.4:provided
[INFO] | | - commons-fileupload:commons-fileupload:jar:1.2.1:provided
[INFO] | - net.sourceforge.findbugs:jsr305:jar:1.3.2:provided
[INFO] ± com.atlassian.activeobjects:activeobjects-plugin:jar:1.2.3:provided
[INFO] | ± net.java.dev.activeobjects:activeobjects:jar:1.2.3:provided
[INFO] | ± com.atlassian.activeobjects:activeobjects-core:jar:1.2.3:provided
[INFO] | | - com.atlassian.activeobjects:activeobjects-spi:jar:1.2.3:provided
[INFO] | ± com.atlassian.activeobjects:activeobjects-dbex:jar:1.2.3:provided
[INFO] | - org.codehaus.woodstox:woodstox-core-asl:jar:4.1.0:provided
[INFO] | - org.codehaus.woodstox:stax2-api:jar:3.1.0:provided
[INFO] ± com.google.collections:google-collections:jar:1.0:provided
[INFO] ± com.atlassian.templaterenderer:atlassian-template-renderer-api:jar:2.0.0:provided
[INFO] | - commons-collections:commons-collections:jar:3.2.1:provided
[INFO] ± org.apache.commons:commons-lang3:jar:3.4:provided
[INFO] ± com.atlassian.annotations:atlassian-annotations:jar:1.1.0:provided
[INFO] | - com.google.code.findbugs:jsr305:jar:3.0.0:provided
[INFO] ± osworkflow:osworkflow:jar:2.8.1:provided
[INFO] - opensymphony:propertyset:jar:1.5:provided

And here is the full stack trace:

[INFO] [talledLocalContainer] 2018-05-23 08:34:03,690 http-nio-2990-exec-11 ERROR admin 514x357x1 18w7wo5 0:0:0:0:0:0:0:1 /secure/admin/workflows/AddWorkflowTransitionValidatorParams!default.jspa [c.a.plugin.module.PrefixDelegatingModuleFactory] Detected an error (LinkageError) instantiating the module for plugin 'tig.jira.extension.tigChecklistExtension' for module 'checklist-completed-validator': loader constraint violation: loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) previously initiated loading for a different type with name "com/opensymphony/workflow/loader/AbstractDescriptor".  This error is usually caused by your plugin including copies of libraries in META-INF/lib unnecessarily. For more details on how to fix this, see https://developer.atlassian.com/x/EgAN .
[INFO] [talledLocalContainer] 2018-05-23 08:34:03,692 http-nio-2990-exec-11 ERROR admin 514x357x1 18w7wo5 0:0:0:0:0:0:0:1 /secure/admin/workflows/AddWorkflowTransitionValidatorParams!default.jspa [webwork.util.ValueStack] query="/descriptorHtml" {[id="null" type="5" values=""]} {[id="descriptorHtml" type="8" values=""]}
[INFO] [talledLocalContainer] java.lang.reflect.InvocationTargetException
[INFO] [talledLocalContainer] 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[INFO] [talledLocalContainer] 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[INFO] [talledLocalContainer] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[INFO] [talledLocalContainer] 	at java.lang.reflect.Method.invoke(Method.java:498)
[INFO] [talledLocalContainer] 	at webwork.util.InjectionUtils$DefaultInjectionImpl.invoke(InjectionUtils.java:70)
[INFO] [talledLocalContainer] 	at webwork.util.InjectionUtils.invoke(InjectionUtils.java:56)
[INFO] [talledLocalContainer] 	at webwork.util.ValueStack.findValue(ValueStack.java:417)
[INFO] [talledLocalContainer] 	at webwork.util.ValueStack.findValue(ValueStack.java:216)
[INFO] [talledLocalContainer] 	at webwork.view.taglib.WebWorkBodyTagSupport.findValue(WebWorkBodyTagSupport.java:62)
[INFO] [talledLocalContainer] 	at webwork.view.taglib.BasicPropertyTag.doStartTag(BasicPropertyTag.java:54)
[INFO] [talledLocalContainer] 	at jsp.secure.admin.views.workflow.addworkflowtransitiondescriptorparams_jsp._jspx_meth_ww_005fproperty_005f4(addworkflowtransitiondescriptorparams_jsp.java:1081)
[INFO] [talledLocalContainer] 	at jsp.secure.admin.views.workflow.addworkflowtransitiondescriptorparams_jsp._jspx_meth_page_005fparam_005f6(addworkflowtransitiondescriptorparams_jsp.java:957)
[INFO] [talledLocalContainer] 	at jsp.secure.admin.views.workflow.addworkflowtransitiondescriptorparams_jsp._jspx_meth_page_005fapplyDecorator_005f0(addworkflowtransitiondescriptorparams_jsp.java:262)
[INFO] [talledLocalContainer] 	at jsp.secure.admin.views.workflow.addworkflowtransitiondescriptorparams_jsp._jspService(addworkflowtransitiondescriptorparams_jsp.java:115)
[INFO] [talledLocalContainer] 	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
[INFO] [talledLocalContainer] 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
[INFO] [talledLocalContainer] 	... 48 filtered
[INFO] [talledLocalContainer] 	at com.atlassian.servicedesk.internal.web.ExternalCustomerLockoutFilter.doFilter(ExternalCustomerLockoutFilter.java:56)
[INFO] [talledLocalContainer] 	... 4 filtered
[INFO] [talledLocalContainer] 	at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter(RedirectInterceptingFilter.java:21)
[INFO] [talledLocalContainer] 	... 45 filtered
[INFO] [talledLocalContainer] 	at com.atlassian.jira.security.JiraSecurityFilter.lambda$doFilter$0(JiraSecurityFilter.java:66)
[INFO] [talledLocalContainer] 	... 1 filtered
[INFO] [talledLocalContainer] 	at com.atlassian.jira.security.JiraSecurityFilter.doFilter(JiraSecurityFilter.java:64)
[INFO] [talledLocalContainer] 	... 20 filtered
[INFO] [talledLocalContainer] 	at com.atlassian.jira.servermetrics.CorrelationIdPopulatorFilter.doFilter(CorrelationIdPopulatorFilter.java:30)
[INFO] [talledLocalContainer] 	... 5 filtered
[INFO] [talledLocalContainer] 	at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilter(CustomerContextSettingFilter.java:116)
[INFO] [talledLocalContainer] 	... 11 filtered
[INFO] [talledLocalContainer] 	at com.atlassian.jira.servermetrics.MetricsCollectorFilter.doFilter(MetricsCollectorFilter.java:25)
[INFO] [talledLocalContainer] 	... 11 filtered
[INFO] [talledLocalContainer] 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
[INFO] [talledLocalContainer] 	... 48 filtered
[INFO] [talledLocalContainer] 	at com.atlassian.servicedesk.internal.web.ExternalCustomerLockoutFilter.doFilter(ExternalCustomerLockoutFilter.java:56)
[INFO] [talledLocalContainer] 	... 13 filtered
[INFO] [talledLocalContainer] 	at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter(RedirectInterceptingFilter.java:21)
[INFO] [talledLocalContainer] 	... 24 filtered
[INFO] [talledLocalContainer] 	at com.atlassian.labs.httpservice.resource.ResourceFilter.doFilter(ResourceFilter.java:59)
[INFO] [talledLocalContainer] 	... 41 filtered
[INFO] [talledLocalContainer] 	at com.atlassian.jira.security.JiraSecurityFilter.lambda$doFilter$0(JiraSecurityFilter.java:66)
[INFO] [talledLocalContainer] 	... 1 filtered
[INFO] [talledLocalContainer] 	at com.atlassian.jira.security.JiraSecurityFilter.doFilter(JiraSecurityFilter.java:64)
[INFO] [talledLocalContainer] 	... 39 filtered
[INFO] [talledLocalContainer] 	at com.atlassian.jira.servermetrics.CorrelationIdPopulatorFilter.doFilter(CorrelationIdPopulatorFilter.java:30)
[INFO] [talledLocalContainer] 	... 5 filtered
[INFO] [talledLocalContainer] 	at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.lambda$invokeFilterChain$0(CustomerContextSettingFilter.java:181)
[INFO] [talledLocalContainer] 	at com.atlassian.servicedesk.internal.api.util.context.ReentrantThreadLocalBasedCodeContext.rteInvoke(ReentrantThreadLocalBasedCodeContext.java:137)
[INFO] [talledLocalContainer] 	at com.atlassian.servicedesk.internal.api.util.context.ReentrantThreadLocalBasedCodeContext.runOutOfContext(ReentrantThreadLocalBasedCodeContext.java:90)
[INFO] [talledLocalContainer] 	at com.atlassian.servicedesk.internal.utils.context.CustomerContextServiceImpl.runOutOfCustomerContext(CustomerContextServiceImpl.java:47)
[INFO] [talledLocalContainer] 	at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.outOfCustomerContext(CustomerContextSettingFilter.java:174)
[INFO] [talledLocalContainer] 	at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilterImpl(CustomerContextSettingFilter.java:130)
[INFO] [talledLocalContainer] 	at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilter(CustomerContextSettingFilter.java:121)
[INFO] [talledLocalContainer] 	... 4 filtered
[INFO] [talledLocalContainer] 	at com.atlassian.jwt.internal.servlet.JwtAuthFilter.doFilter(JwtAuthFilter.java:32)
[INFO] [talledLocalContainer] 	... 8 filtered
[INFO] [talledLocalContainer] 	at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter(RedirectInterceptingFilter.java:21)
[INFO] [talledLocalContainer] 	... 4 filtered
[INFO] [talledLocalContainer] 	at com.atlassian.web.servlet.plugin.LocationCleanerFilter.doFilter(LocationCleanerFilter.java:36)
[INFO] [talledLocalContainer] 	... 26 filtered
[INFO] [talledLocalContainer] 	at com.atlassian.jira.servermetrics.MetricsCollectorFilter.doFilter(MetricsCollectorFilter.java:25)
[INFO] [talledLocalContainer] 	... 23 filtered
[INFO] [talledLocalContainer] 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[INFO] [talledLocalContainer] 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[INFO] [talledLocalContainer] 	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
[INFO] [talledLocalContainer] 	at java.lang.Thread.run(Thread.java:748)
[INFO] [talledLocalContainer] Caused by: com.atlassian.util.concurrent.LazyReference$InitializationException: java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) previously initiated loading for a different type with name "com/opensymphony/workflow/loader/AbstractDescriptor"
[INFO] [talledLocalContainer] 	at com.atlassian.util.concurrent.LazyReference.getInterruptibly(LazyReference.java:149)
[INFO] [talledLocalContainer] 	at com.atlassian.util.concurrent.LazyReference.get(LazyReference.java:112)
[INFO] [talledLocalContainer] 	at com.atlassian.util.concurrent.ResettableLazyReference.get(ResettableLazyReference.java:92)
[INFO] [talledLocalContainer] 	at com.atlassian.jira.plugin.AbstractJiraModuleDescriptor.getModule(AbstractJiraModuleDescriptor.java:167)
[INFO] [talledLocalContainer] 	at com.atlassian.jira.plugin.workflow.WorkflowValidatorModuleDescriptor.getHtml(WorkflowValidatorModuleDescriptor.java:28)
[INFO] [talledLocalContainer] 	... 426 more
[INFO] [talledLocalContainer] Caused by: java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) previously initiated loading for a different type with name "com/opensymphony/workflow/loader/AbstractDescriptor"
[INFO] [talledLocalContainer] 	at java.lang.ClassLoader.defineClass1(Native Method)
[INFO] [talledLocalContainer] 	at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
[INFO] [talledLocalContainer] 	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.findClass(BundleWiringImpl.java:2279)
[INFO] [talledLocalContainer] 	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1501)
[INFO] [talledLocalContainer] 	at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:75)
[INFO] [talledLocalContainer] 	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
[INFO] [talledLocalContainer] 	at java.lang.Class.getDeclaredMethods0(Native Method)
[INFO] [talledLocalContainer] 	at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
[INFO] [talledLocalContainer] 	at java.lang.Class.getDeclaredMethods(Class.java:1975)
[INFO] [talledLocalContainer] 	at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:609)
[INFO] [talledLocalContainer] 	at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:521)
[INFO] [talledLocalContainer] 	at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:507)
[INFO] [talledLocalContainer] 	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:241)
[INFO] [talledLocalContainer] 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1069)
[INFO] [talledLocalContainer] 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1042)
[INFO] [talledLocalContainer] 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510)
[INFO] [talledLocalContainer] 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
[INFO] [talledLocalContainer] 	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:342)
[INFO] [talledLocalContainer] 	... 2 filtered
[INFO] [talledLocalContainer] 	at java.lang.reflect.Method.invoke(Method.java:498)
[INFO] [talledLocalContainer] 	at com.atlassian.plugin.osgi.spring.DefaultSpringContainerAccessor.createBean(DefaultSpringContainerAccessor.java:97)
[INFO] [talledLocalContainer] 	at com.atlassian.plugin.module.ClassPrefixModuleFactory.createModule(ClassPrefixModuleFactory.java:35)
[INFO] [talledLocalContainer] 	at com.atlassian.plugin.module.PrefixDelegatingModuleFactory.createModule(PrefixDelegatingModuleFactory.java:88)
[INFO] [talledLocalContainer] 	at com.atlassian.jira.plugin.AbstractJiraModuleDescriptor.createModule(AbstractJiraModuleDescriptor.java:179)
[INFO] [talledLocalContainer] 	at com.atlassian.jira.plugin.AbstractJiraModuleDescriptor$1.create(AbstractJiraModuleDescriptor.java:60)
[INFO] [talledLocalContainer] 	at com.atlassian.util.concurrent.ResettableLazyReference$InternalReference.create(ResettableLazyReference.java:182)
[INFO] [talledLocalContainer] 	at com.atlassian.util.concurrent.LazyReference$Sync.run(LazyReference.java:325)
[INFO] [talledLocalContainer] 	at com.atlassian.util.concurrent.LazyReference.getInterruptibly(LazyReference.java:143)
[INFO] [talledLocalContainer] 	... 431 more

My guess is that you might have the wrong versions of osworkflow. From my dependency:tree:

[INFO] |  +- osworkflow:osworkflow:jar:2.9.0-atlassian-1:provided

But you shouldn’t have to specify it since it’s provided through jira-api. Try bumping up the version of it up to that version.

1 Like

I followed your instructions and changed my pom.xml to include the dependencies below and it works as intended now. Thank you very much!

<dependency>
            <groupId>osworkflow</groupId>
            <artifactId>osworkflow</artifactId>
            <version>2.9.0-atlassian-1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>opensymphony</groupId>
            <artifactId>propertyset</artifactId>
            <version>1.5</version>
            <scope>provided</scope>
        </dependency>
1 Like

Daniel saves the day! Again!