Maybe Dependency Problem - Integrating Optaplanner in a Jira Plugin

Hello,

I’m trying to integragte Optaplanner inside my jira plugin.

Optaplanner MVN Repo with dependency versions

I included the optaplanner-core dependency inside my pom.

<dependency>
          <groupId>org.optaplanner</groupId>
          <artifactId>optaplanner-core</artifactId>
          <version>7.7.0.Final</version>
</dependency>

Running this code snippet:

line 47: SolverFactory solverFactory = SolverFactory.createFromXmlResource("planner/solver/solverConfig.xml", getClass().getClassLoader());

throws the exception:

[INFO] [talledLocalContainer] Apr 04, 2018 11:15:17 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate
[INFO] [talledLocalContainer] INFORMATION: Initiating Jersey application, version 'Jersey: 1.19 02/11/2015 03:25 AM'
[INFO] [talledLocalContainer] com.thoughtworks.xstream.io.StreamException: Cannot create XmlPullParser
[INFO] [talledLocalContainer]   at com.thoughtworks.xstream.io.xml.AbstractXppDriver.createReader(AbstractXppDriver.java:56)
[INFO] [talledLocalContainer]   at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1337)
[INFO] [talledLocalContainer]   at org.optaplanner.core.impl.solver.XStreamXmlSolverFactory.configure(XStreamXmlSolverFactory.java:150)
[INFO] [talledLocalContainer]   at org.optaplanner.core.impl.solver.XStreamXmlSolverFactory.configure(XStreamXmlSolverFactory.java:141)
[INFO] [talledLocalContainer]   at org.optaplanner.core.impl.solver.XStreamXmlSolverFactory.configure(XStreamXmlSolverFactory.java:116)
[INFO] [talledLocalContainer]   at org.optaplanner.core.api.solver.SolverFactory.createFromXmlResource(SolverFactory.java:103)
[INFO] [talledLocalContainer]   at com.mycompany.planner.app.App.buildSolver(App.java:47)
[INFO] [talledLocalContainer]   at com.mycompany.planner.app.App.<init>(App.java:32)
[INFO] [talledLocalContainer]   at com.mycompany.planner.app.AppRestRessource.all(AppRestRessource.java:108)
[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 com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker$1.invoke(DispatchProviderHelper.java:192)
[INFO] [talledLocalContainer]   at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$1.intercept(DispatchProviderHelper.java:83)
[INFO] [talledLocalContainer]   at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:53)
[INFO] [talledLocalContainer]   at com.atlassian.plugins.rest.common.expand.interceptor.ExpandInterceptor.intercept(ExpandInterceptor.java:34)
[INFO] [talledLocalContainer]   at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:53)
[INFO] [talledLocalContainer]   at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper.invokeMethodWithInterceptors(DispatchProviderHelper.java:110)
[INFO] [talledLocalContainer]   at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker._dispatch(DispatchProviderHelper.java:190)
[INFO] [talledLocalContainer]   at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
[INFO] [talledLocalContainer]   at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
[INFO] [talledLocalContainer]   at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
[INFO] [talledLocalContainer]   at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
[INFO] [talledLocalContainer]   at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
[INFO] [talledLocalContainer]   at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
[INFO] [talledLocalContainer]   at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)
[INFO] [talledLocalContainer]   at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)
[INFO] [talledLocalContainer]   at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
[INFO] [talledLocalContainer]   at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
[INFO] [talledLocalContainer]   at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
[INFO] [talledLocalContainer]   at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
[INFO] [talledLocalContainer]   at com.atlassian.plugins.rest.module.RestDelegatingServletFilter$JerseyOsgiServletContainer.doFilter(RestDelegatingServletFilter.java:154)
[INFO] [talledLocalContainer]   at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:829)
[INFO] [talledLocalContainer]   at com.atlassian.plugins.rest.module.RestDelegatingServletFilter.doFilter(RestDelegatingServletFilter.java:68)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:70)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:58)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58)
[INFO] [talledLocalContainer]   at com.atlassian.plugins.rest.module.servlet.RestServletUtilsUpdaterFilter.doFilterInternal(RestServletUtilsUpdaterFilter.java:22)
[INFO] [talledLocalContainer]   at com.atlassian.plugins.rest.module.servlet.RestServletUtilsUpdaterFilter.doFilter(RestServletUtilsUpdaterFilter.java:34)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58)
[INFO] [talledLocalContainer]   at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:26)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58)
[INFO] [talledLocalContainer]   at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:26)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58)
[INFO] [talledLocalContainer]   at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:26)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58)
[INFO] [talledLocalContainer]   at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:26)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58)
[INFO] [talledLocalContainer]   at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:26)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58)
[INFO] [talledLocalContainer]   at com.atlassian.mywork.client.filter.ServingRequestsFilter.doFilter(ServingRequestsFilter.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58)
[INFO] [talledLocalContainer]   at com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFixupFilter.doFilter(PrettyUrlsSiteMeshFixupFilter.java:36)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58)
[INFO] [talledLocalContainer]   at com.atlassian.prettyurls.filter.PrettyUrlsDispatcherFilter.doFilter(PrettyUrlsDispatcherFilter.java:60)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58)
[INFO] [talledLocalContainer]   at com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFilter.doFilter(PrettyUrlsSiteMeshFilter.java:92)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58)
[INFO] [talledLocalContainer]   at com.atlassian.prettyurls.filter.PrettyUrlsMatcherFilter.doFilter(PrettyUrlsMatcherFilter.java:56)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58)
[INFO] [talledLocalContainer]   at com.atlassian.labs.botkiller.BotKillerFilter.doFilter(BotKillerFilter.java:36)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58)
[INFO] [talledLocalContainer]   at com.atlassian.labs.httpservice.resource.ResourceFilter.doFilter(ResourceFilter.java:59)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:70)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:58)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
[INFO] [talledLocalContainer]   at com.atlassian.jira.web.filters.accesslog.AccessLogFilter.executeRequest(AccessLogFilter.java:92)
[INFO] [talledLocalContainer]   at com.atlassian.jira.web.filters.accesslog.AccessLogFilter.doFilter(AccessLogFilter.java:78)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
[INFO] [talledLocalContainer]   at com.atlassian.jira.security.xsrf.XsrfTokenAdditionRequestFilter.doFilter(XsrfTokenAdditionRequestFilter.java:49)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
[INFO] [talledLocalContainer]   at com.atlassian.jira.web.filters.pagebuilder.PageBuilderFilter.doFilter(PageBuilderFilter.java:81)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
[INFO] [talledLocalContainer]   at com.atlassian.jira.web.filters.CommittedResponseHtmlErrorRecoveryFilter.doFilter(CommittedResponseHtmlErrorRecoveryFilter.java:55)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:39)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58)
[INFO] [talledLocalContainer]   at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:61)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:70)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:58)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
[INFO] [talledLocalContainer]   at com.atlassian.jira.web.filters.MauEventFilter.doFilter(MauEventFilter.java:52)
[INFO] [talledLocalContainer]   at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
[INFO] [talledLocalContainer]   at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:242)
[INFO] [talledLocalContainer]   at com.atlassian.jira.security.JiraSecurityFilter.doFilter(JiraSecurityFilter.java:70)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
[INFO] [talledLocalContainer]   at com.atlassian.security.auth.trustedapps.filter.TrustedApplicationsFilter.doFilter(TrustedApplicationsFilter.java:103)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
[INFO] [talledLocalContainer]   at com.atlassian.seraph.filter.BaseLoginFilter.doFilter(BaseLoginFilter.java:148)
[INFO] [talledLocalContainer]   at com.atlassian.jira.web.filters.JiraLoginFilter.doFilter(JiraLoginFilter.java:77)
[INFO] [talledLocalContainer]   at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:39)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58)
[INFO] [talledLocalContainer]   at com.atlassian.oauth.serviceprovider.internal.servlet.OAuthFilter.doFilter(OAuthFilter.java:79)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58)
[INFO] [talledLocalContainer]   at com.atlassian.plugins.rest.module.servlet.RestSeraphFilter.doFilter(RestSeraphFilter.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58)
[INFO] [talledLocalContainer]   at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:61)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:70)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:58)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
[INFO] [talledLocalContainer]   at com.atlassian.johnson.filters.AbstractJohnsonFilter.doFilter(AbstractJohnsonFilter.java:59)
[INFO] [talledLocalContainer]   at com.atlassian.jira.web.filters.johnson.JiraJohnson503Filter.doFilter(JiraJohnson503Filter.java:24)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
[INFO] [talledLocalContainer]   at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
[INFO] [talledLocalContainer]   at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
[INFO] [talledLocalContainer]   at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
[INFO] [talledLocalContainer]   at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:39)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58)
[INFO] [talledLocalContainer]   at com.atlassian.analytics.client.filter.JiraAnalyticsFilter.doFilter(JiraAnalyticsFilter.java:42)
[INFO] [talledLocalContainer]   at com.atlassian.analytics.client.filter.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:39)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:58)
[INFO] [talledLocalContainer]   at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:61)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:64)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:70)
[INFO] [talledLocalContainer]   at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:58)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
[INFO] [talledLocalContainer]   at com.atlassian.jira.web.filters.steps.ChainedFilterStepRunner.doFilter(ChainedFilterStepRunner.java:74)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
[INFO] [talledLocalContainer]   at com.atlassian.core.filters.cache.AbstractCachingFilter.doFilter(AbstractCachingFilter.java:31)
[INFO] [talledLocalContainer]   at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
[INFO] [talledLocalContainer]   at com.atlassian.core.filters.encoding.AbstractEncodingFilter.doFilter(AbstractEncodingFilter.java:39)
[INFO] [talledLocalContainer]   at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
[INFO] [talledLocalContainer]   at com.atlassian.jira.web.filters.PathMatchingEncodingFilter.doFilter(PathMatchingEncodingFilter.java:39)
[INFO] [talledLocalContainer]   at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
[INFO] [talledLocalContainer]   at com.atlassian.jira.startup.JiraStartupChecklistFilter.doFilter(JiraStartupChecklistFilter.java:62)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
[INFO] [talledLocalContainer]   at com.atlassian.jira.web.filters.MultipartBoundaryCheckFilter.doFilter(MultipartBoundaryCheckFilter.java:36)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
[INFO] [talledLocalContainer]   at com.atlassian.jira.web.filters.steps.ChainedFilterStepRunner.doFilter(ChainedFilterStepRunner.java:74)
[INFO] [talledLocalContainer]   at com.atlassian.jira.web.filters.JiraFirstFilter.doFilter(JiraFirstFilter.java:57)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
[INFO] [talledLocalContainer]   at com.atlassian.gzipfilter.GzipFilter.doFilterInternal(GzipFilter.java:115)
[INFO] [talledLocalContainer]   at com.atlassian.gzipfilter.GzipFilter.doFilter(GzipFilter.java:92)
[INFO] [talledLocalContainer]   at com.atlassian.jira.web.filters.gzip.JiraGzipFilter.doFilter(JiraGzipFilter.java:47)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
[INFO] [talledLocalContainer]   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
[INFO] [talledLocalContainer]   at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
[INFO] [talledLocalContainer]   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
[INFO] [talledLocalContainer]   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
[INFO] [talledLocalContainer]   at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
[INFO] [talledLocalContainer]   at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670)
[INFO] [talledLocalContainer]   at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
[INFO] [talledLocalContainer]   at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
[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: org.xmlpull.v1.XmlPullParserException: No valid parser classes found in resource /META-INF/services/org.xmlpull.v1.XmlPullParserFactory that contained 'org.xmlpull.mxp1.MXParserFactory'
[INFO] [talledLocalContainer]   at org.xmlpull.v1.XmlPullParserFactory.newPullParser(XmlPullParserFactory.java:175)
[INFO] [talledLocalContainer]   at com.thoughtworks.xstream.io.xml.XppDriver.createParser(XppDriver.java:59)
[INFO] [talledLocalContainer]   at com.thoughtworks.xstream.io.xml.AbstractXppDriver.createReader(AbstractXppDriver.java:54)
[INFO] [talledLocalContainer]   ... 219 more

I’m not very familiar with osgi and maven dependencies, so any help would be very welcome.

I’m not sure if any package of optaplanner should be visible in the plugin osgi container?

Kind Regards

Additional:

By the system bundle com.toughtworks.xstream is also provided, but with version 1.4.8 (see image)
image

Optaplanner has a dependency to version 1.4.10 of com.thoughtworks.xstream

When executing XStream.class.getPackage().getImplementationVersion() I get version 1.4.8

Maybe that’s one problem (maybe there a more behind).

How can I specify to make use of the compiled optaplanner XStream package instead of the one provided by the system bundle?

Dependency / class loading problem for sure :stuck_out_tongue:

We need a little more info to help you. Whats you’re OSGi imports and exclusions?
I guess there are two paths you can go along to solve this:

  1. Try to use the dependencies that are already bundled in JIRA, you will have to make sure that you consume the needed packages of XStream and xmlpull:xmlpull and xpp3:xpp3_min dependencies via OSGi
  2. You go the other way around, make sure that the XStream and xmlpull and xpp3 dependencies are not consumed via OSGi and bundle them in your app. Sketch:
                       <Import-Package>
                            !xstream.package.name.here
                            !xpp.package.name.here,
                            *
                        </Import-Package>

Second would be my preferred solution in that situation.
Hope that helps

Thank you for your suggestion

here are my dependency and imports of my pom file:

<dependencies>
        <dependency>
            <groupId>com.atlassian.jira</groupId>
            <artifactId>jira-api</artifactId>
            <version>${jira.version}</version>
            <scope>provided</scope>
        </dependency>
        <!-- Add dependency on jira-core if you want access to JIRA implementation classes as well as the sanctioned API. -->
        <!-- This is not normally recommended, but may be required eg when migrating a plugin originally developed against JIRA 4.x -->
        <dependency>
            <groupId>com.atlassian.jira</groupId>
            <artifactId>jira-core</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>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.atlassian.plugin</groupId>
            <artifactId>atlassian-spring-scanner-runtime</artifactId>
            <version>${atlassian.spring.scanner.version}</version>
            <scope>runtime</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>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.1.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.6.6</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-all</artifactId>
            <version>1.8.5</version>
            <scope>test</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.sal</groupId>
            <artifactId>sal-api</artifactId>
            <version>2.6.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.wink</groupId>
            <artifactId>wink-client</artifactId>
            <version>1.1.3-incubating</version>
            <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>com.atlassian.activeobjects</groupId>
          <artifactId>activeobjects-plugin</artifactId>
          <version>${ao.version}</version>
          <scope>provided</scope>
        </dependency>
      <dependency>
        <groupId>org.optaplanner</groupId>
        <artifactId>optaplanner-core</artifactId>
        <version>7.7.0.Final</version>
      </dependency>
    </dependencies>
<Import-Package>
    org.springframework.osgi.*;resolution:="optional",
    org.eclipse.gemini.blueprint.*;resolution:="optional",
    !com.thoughtworks.xstream.XStream,
    *;version="0";resolution:="optional"
</Import-Package>

Where can I check which package is now loaded?
As I get v 1.4.8 as output for XStream.class.getPackage().getImplementationVersion()
(Same result without import package which excludes xstream)

Relating to the error message

Caused by: org.xmlpull.v1.XmlPullParserException: No valid parser classes found in resource /META-INF/services/org.xmlpull.v1.XmlPullParserFactory that contained 'org.xmlpull.mxp1.MXParserFactory'
[INFO] [talledLocalContainer]   at org.xmlpull.v1.XmlPullParserFactory.newPullParser(XmlPullParserFactory.java:175)
[INFO] [talledLocalContainer]   at com.thoughtworks.xstream.io.xml.XppDriver.createParser(XppDriver.java:59)
[INFO] [talledLocalContainer]   at com.thoughtworks.xstream.io.xml.AbstractXppDriver.createReader(AbstractXppDriver.java:54)
[INFO] [talledLocalContainer]   ... 219 more

I took a look inside my .jar plugin and found, that inside the file in org.xmlpull.v1.XmlPullParserFactory only org.xmlpull.mxp1.MXParser,org.xmlpull.mxp1_serializer.MXSerializer is given.
And in the package org.xmlpull.mxp1 no MXParserFactory class is given (only a MXParser.class)

But I need the MXParserFactory class to be there!?

So we are moving along option 2 wrt. my first answer.
How do you package your ‘compile’ dependencies?

I guess the transitive dependecies of XStream (xpp, xmlpull) don’t get packaged.
Make sure you package those into your jar, which is then packaged inside the obr.
And the exclusion is not correct, it would exclude only a class (don’t quote me on this). I think it should be something like

!com.thoughtworks.xstream.*

I’ve also seen that Optaplanner already does something OSGish, that might also get in the way.

Cheers

Sorry, I do not understand what you mean

The optaplanner dependency is from a central maven repo from:
Optaplanner MVN Repo


Can you tell me, how to check which package is used (internal or osgi one)
As there was also never a ocm.thoughtworks.xstream inside my import package in the osgi browser

There is an import of all available packages: *.

What I mean is: You package the jar of Opataplanner into your app’s jar, right?
Do you also package the jars of XStream 1.4.10 and the transitive dependecy Xpp and xmlpull into your jar? Or is this already contained in the Optaplanner jar?

Yes thats right [sth I want to change in the future - but it was easier to get the plugin running with it ;)]

No, I do not package the jar of optaplanner into the plugin
with the given dependency, inside the created jar of the plugin there is a directory org.optaplanner

image

So your jar contains all the dependencies unpackaged, i.e. their class files?

I have experienced that using the Java ServiceLoader is problematic in OSGi, so if you have a different way to configure OptaPlanner / XStream which implementation to use that might spare you a lot of pain.

To find out which class is really used (earlier question), you can use
XStream.class.getProtectionDomain().getCodeSource().getLocation() to be sure that the wrong / right location is used.

I’ve found another way to “load” the files
Optaplanner gives one the option to create the loaded files using the related java classes

With that I’m able to solve a created optaplanner problem.

Will try to fix my issue later, to load xml and drl files and will now go on with the java api.

But it is really frustrating, that there is such a dependency problem.

Dependencies is a complicated problem (different versions, what to use as “provided”, what to bundle) - I think the OSGi and AMPS procedures run reasonably well. You came with a huge list of dependencies, that makes it not ideal to begin with.
Java ServiceLoader does not honor OSGi, so if you use a dependency that uses a service loader to bootstrap some implementation you often cannot change them, although you have different needs …
Glad you found a way to move on for now.
Good you use Spring scanner, which gives you more control and flexibility which packages you consume from other bundles and which you package.