Q:

Spring Data exception furing MongoRepository init

I am getting an exception when using pf4j with Spring Data.
My project structure is a web application org.home.server.communication (war) which is deployed into Tomcat and uses Spring MVC. It loads loads a pf4j plugin - org.home.server.core (jar).
It works perfectly, until I try to use spring-data-mongodb in org.home.server.core (plugin project) and try to use MongoRepository/CrudRepository/Repository. 
In the plugin constructor I do:
public PluginStarter(final PluginWrapper wrapper) {
    super(wrapper);
    appContext.setId("Core-Module-Context");

    appContext.setClassLoader(this.getClass().getClassLoader());
    appContext.getBeanFactory().setBeanClassLoader(this.getClass().getClassLoader());

    appContext.register(CoreRootConfig.class);
    appContext.refresh();
    mApplicationContext = appContext;
}

But when I define any Repository inside the plugin app and try to start it from my main application, it crashes. Here is Repository example:
public interface ConnectorRepository extends MongoRepository<Connector, String> {}

It all works fine when I don't use pf4j and jsut run jar as standalone application. So, I assume that the problem is not with Spring Framework. Maybe somebody already tried to use Spring-Data and Repositories in pf4j and had this problem.
Maybe somebody could point me out where to look next?
D|DefaultListableBeanFactory              |Invoking afterPropertiesSet() on bean with name 'connectorRepository'
D|PluginClassLoader                       |Received request to load class 'org.springframework.data.repository.core.support.AbstractRepositoryMetadata'
D|PluginClassLoader                       |Found class 'org.springframework.data.repository.core.support.AbstractRepositoryMetadata' in plugin classpath
D|PluginClassLoader                       |Received request to load class 'org.springframework.data.repository.core.support.DefaultRepositoryMetadata'
D|PluginClassLoader                       |Found class 'org.springframework.data.repository.core.support.DefaultRepositoryMetadata' in plugin classpath
D|PluginClassLoader                       |Received request to load class 'org.springframework.data.repository.core.support.AnnotationRepositoryMetadata'
D|PluginClassLoader                       |Found class 'org.springframework.data.repository.core.support.AnnotationRepositoryMetadata' in plugin classpath
D|PluginClassLoader                       |Received request to load class 'org.springframework.data.repository.query.QueryLookupStrategy'
D|PluginClassLoader                       |Found class 'org.springframework.data.repository.query.QueryLookupStrategy' in plugin classpath
D|PluginClassLoader                       |Received request to load class 'org.springframework.data.mongodb.repository.query.MongoEntityInformation'
D|PluginClassLoader                       |Found class 'org.springframework.data.mongodb.repository.query.MongoEntityInformation' in plugin classpath
D|PluginClassLoader                       |Received request to load class 'org.springframework.data.repository.util.NullableWrapper'
D|PluginClassLoader                       |Found class 'org.springframework.data.repository.util.NullableWrapper' in plugin classpath
D|PluginClassLoader                       |Received request to load class 'org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryCollectingQueryCreationListener'
D|PluginClassLoader                       |Found class 'org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryCollectingQueryCreationListener' in plugin classpath
D|PluginClassLoader                       |Received request to load class 'org.springframework.data.repository.core.CrudMethods'
D|PluginClassLoader                       |Found class 'org.springframework.data.repository.core.CrudMethods' in plugin classpath
D|PluginClassLoader                       |Received request to load class 'org.springframework.core.GenericTypeResolver$TypeVariableMapVariableResolver'
D|PluginClassLoader                       |Found class 'org.springframework.core.GenericTypeResolver$TypeVariableMapVariableResolver' in plugin classpath
D|PluginClassLoader                       |Received request to load class 'org.springframework.data.util.ParameterizedTypeInformation'
D|PluginClassLoader                       |Received request to load class 'org.springframework.data.util.ParentTypeAwareTypeInformation'
D|PluginClassLoader                       |Found class 'org.springframework.data.util.ParentTypeAwareTypeInformation' in plugin classpath
D|PluginClassLoader                       |Found class 'org.springframework.data.util.ParameterizedTypeInformation' in plugin classpath
D|PluginClassLoader                       |Received request to load class 'org.springframework.data.util.TypeVariableTypeInformation'
D|PluginClassLoader                       |Found class 'org.springframework.data.util.TypeVariableTypeInformation' in plugin classpath
D|PluginClassLoader                       |Received request to load class 'org.springframework.data.repository.core.support.RepositoryFactorySupport$RepositoryInformationCacheKey'
D|PluginClassLoader                       |Found class 'org.springframework.data.repository.core.support.RepositoryFactorySupport$RepositoryInformationCacheKey' in plugin classpath
D|PluginClassLoader                       |Received request to load class 'org.springframework.data.repository.core.support.DefaultRepositoryInformation'
D|PluginClassLoader                       |Found class 'org.springframework.data.repository.core.support.DefaultRepositoryInformation' in plugin classpath
D|PluginClassLoader                       |Received request to load class 'org.springframework.data.querydsl.QueryDslUtils'
D|PluginClassLoader                       |Found class 'org.springframework.data.querydsl.QueryDslUtils' in plugin classpath
D|PluginClassLoader                       |Received request to load class 'com.mysema.query.types.Predicate'
D|PluginClassLoader                       |Look in dependencies for class 'com.mysema.query.types.Predicate'
D|PluginClassLoader                       |Couldn't find class '{}' in plugin classpath. Delegating to parent
D|PluginClassLoader                       |Received request to load class 'com.mysema.query.types$Predicate'
D|PluginClassLoader                       |Look in dependencies for class 'com.mysema.query.types$Predicate'
D|PluginClassLoader                       |Couldn't find class '{}' in plugin classpath. Delegating to parent
D|PluginClassLoader                       |Received request to load class 'org.springframework.data.mongodb.repository.support.SimpleMongoRepository'
D|PluginClassLoader                       |Found class 'org.springframework.data.mongodb.repository.support.SimpleMongoRepository' in plugin classpath
D|PluginClassLoader                       |Received request to load class 'org.springframework.data.domain.Sort'
D|PluginClassLoader                       |Found class 'org.springframework.data.domain.Sort' in plugin classpath
D|PluginClassLoader                       |Received request to load class 'org.springframework.data.domain.Pageable'
D|PluginClassLoader                       |Found class 'org.springframework.data.domain.Pageable' in plugin classpath
D|PluginClassLoader                       |Received request to load class 'org.springframework.data.domain.Page'
D|PluginClassLoader                       |Received request to load class 'org.springframework.data.domain.Slice'
D|PluginClassLoader                       |Found class 'org.springframework.data.domain.Slice' in plugin classpath
D|PluginClassLoader                       |Found class 'org.springframework.data.domain.Page' in plugin classpath
D|PluginClassLoader                       |Received request to load class 'java.util.AbstractSet'
D|PluginClassLoader                       |Look in dependencies for class 'java.util.AbstractSet'
D|PluginClassLoader                       |Couldn't find class '{}' in plugin classpath. Delegating to parent
D|PluginClassLoader                       |Received request to load class 'org.springframework.data.mongodb.core.mapping.BasicMongoPersistentEntity$MongoPersistentPropertyComparator'
D|PluginClassLoader                       |Found class 'org.springframework.data.mongodb.core.mapping.BasicMongoPersistentEntity$MongoPersistentPropertyComparator' in plugin classpath
D|PluginClassLoader                       |Received request to load class 'org.springframework.data.mapping.model.PreferredConstructorDiscoverer'
D|PluginClassLoader                       |Found class 'org.springframework.data.mapping.model.PreferredConstructorDiscoverer' in plugin classpath
D|PluginClassLoader                       |Received request to load class 'org.springframework.data.util.ReflectionUtils'
D|PluginClassLoader                       |Found class 'org.springframework.data.util.ReflectionUtils' in plugin classpath
D|PluginClassLoader                       |Received request to load class 'org.springframework.data.util.ReflectionUtils$DescribedFieldFilter'
D|PluginClassLoader                       |Found class 'org.springframework.data.util.ReflectionUtils$DescribedFieldFilter' in plugin classpath
D|PluginClassLoader                       |Received request to load class 'org.springframework.core.NestedExceptionUtils'
D|PluginClassLoader                       |Found class 'org.springframework.core.NestedExceptionUtils' in plugin classpath
D|DefaultListableBeanFactory              |Retrieved dependent beans for bean '(inner bean)#a303d13': [connectorRepository]
D|DefaultListableBeanFactory              |Retrieved dependent beans for bean '(inner bean)#72adbe38': [(inner bean)#a303d13]
D|DefaultListableBeanFactory              |Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@144f3ec6: defining beans [org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,coreRootConfig,org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor,org.springframework.context.annotation.ConfigurationClassPostProcessor.enhancedConfigurationProcessor,org.home.server.core.module.config.CoreMongoDBConfig,mongo,mongoTemplate,org.springframework.data.mongodb.repository.config.MongoRepositoryConfigurationExtension#0,org.springframework.data.repository.core.support.RepositoryInterfaceAwareBeanPostProcessor#0,mongoMappingContext,connectorRepository]; root of factory hierarchy
D|DisposableBeanAdapter                   |Invoking destroy() on bean with name 'mongo'
D|PluginClassLoader                       |Received request to load class 'com.mongodb.ConcurrentLinkedDeque$CLDIterator'
D|PluginClassLoader                       |Found class 'com.mongodb.ConcurrentLinkedDeque$CLDIterator' in plugin classpath
D|DisposableBeanAdapter                   |Invoking destroy() on bean with name 'org.home.server.core.module.config.CoreMongoDBConfig'
D|DisposableBeanAdapter                   |Invoking destroy() on bean with name 'coreRootConfig'
E|DefaultExtensionFactory                 |null
java.lang.reflect.InvocationTargetException: null
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_20]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_20]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_20]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:408) ~[na:1.8.0_20]
    at ro.fortsoft.pf4j.DefaultPluginFactory.create(DefaultPluginFactory.java:61) ~[DefaultPluginFactory.class:0.9.0]
    at ro.fortsoft.pf4j.PluginWrapper.getPlugin(PluginWrapper.java:63) [PluginWrapper.class:0.9.0]
    at ro.fortsoft.pf4j.DefaultPluginManager.startPlugins(DefaultPluginManager.java:213) [DefaultPluginManager.class:0.9.0]
    at org.home.server.communication.Starter.contextInitialized(Starter.java:86) [Starter.class:na]
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4758) [catalina.jar:8.0.9]
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5184) [catalina.jar:8.0.9]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [catalina.jar:8.0.9]
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:724) [catalina.jar:8.0.9]
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:700) [catalina.jar:8.0.9]
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:714) [catalina.jar:8.0.9]
    at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1588) [catalina.jar:8.0.9]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_20]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_20]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_20]
    at java.lang.reflect.Method.invoke(Method.java:483) ~[na:1.8.0_20]
    at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300) [tomcat-coyote.jar:8.0.9]
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) [na:1.8.0_20]
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) [na:1.8.0_20]
    at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:463) [catalina.jar:8.0.9]
    at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:413) [catalina.jar:8.0.9]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_20]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_20]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_20]
    at java.lang.reflect.Method.invoke(Method.java:483) ~[na:1.8.0_20]
    at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300) [tomcat-coyote.jar:8.0.9]
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) [na:1.8.0_20]
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) [na:1.8.0_20]
    at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1466) [na:1.8.0_20]
    at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76) [na:1.8.0_20]
    at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1307) [na:1.8.0_20]
    at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1399) [na:1.8.0_20]
    at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:828) [na:1.8.0_20]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_20]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_20]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_20]
    at java.lang.reflect.Method.invoke(Method.java:483) ~[na:1.8.0_20]
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323) [na:1.8.0_20]
    at sun.rmi.transport.Transport$1.run(Transport.java:178) [na:1.8.0_20]
    at sun.rmi.transport.Transport$1.run(Transport.java:175) [na:1.8.0_20]
    at java.security.AccessController.doPrivileged(Native Method) [na:1.8.0_20]
    at sun.rmi.transport.Transport.serviceCall(Transport.java:174) [na:1.8.0_20]
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:557) [na:1.8.0_20]
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:812) [na:1.8.0_20]
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:671) [na:1.8.0_20]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_20]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_20]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_20]
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'connectorRepository': Invocation of init method failed; nested exception is java.lang.ExceptionInInitializerError 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1553) ~ [AbstractAutowireCapableBeanFactory.class:4.0.6.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) ~[AbstractAutowireCapableBeanFactory.class:4.0.6.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475) ~[AbstractAutowireCapableBeanFactory.class:4.0.6.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302) ~[AbstractBeanFactory$1.class:4.0.6.RELEASE]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) ~[DefaultSingletonBeanRegistry.class:4.0.6.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298) ~[AbstractBeanFactory.class:4.0.6.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) ~[AbstractBeanFactory.class:4.0.6.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:684) ~[DefaultListableBeanFactory.class:4.0.6.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760) ~[AbstractApplicationContext.class:4.0.6.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482) ~[AbstractApplicationContext.class:4.0.6.RELEASE]
    at org.home.server.core.module.CoreModule.<init>(CoreModule.java:90) ~[na:na]
    at org.home.server.core.PluginStarter.<init>(PluginStarter.java:56) ~[na:na]
    ... 51 common frames omitted
   Caused by: java.lang.ExceptionInInitializerError: null
    at org.springframework.data.mapping.model.BasicPersistentEntity.<init>(BasicPersistentEntity.java:85) ~[na:na] 
    at org.springframework.data.mongodb.core.mapping.BasicMongoPersistentEntity.<init>(BasicMongoPersistentEntity.java:67) ~[na:na]
    at org.springframework.data.mongodb.core.mapping.MongoMappingContext.createPersistentEntity(MongoMappingContext.java:89) ~[na:na]
    at org.springframework.data.mongodb.core.mapping.MongoMappingContext.createPersistentEntity(MongoMappingContext.java:37) ~[na:na]
    at org.springframework.data.mapping.context.AbstractMappingContext.addPersistentEntity(AbstractMappingContext.java:280) ~[na:na]
    at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:181) ~[na:na]
    at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:141) ~[na:na]
    at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentEntity(AbstractMappingContext.java:67) ~[na:na]
    at org.springframework.data.mongodb.repository.support.MongoRepositoryFactory.getEntityInformation(MongoRepositoryFactory.java:141) ~[na:na]
    at org.springframework.data.mongodb.repository.support.MongoRepositoryFactory.getTargetRepository(MongoRepositoryFactory.java:83) ~[na:na]
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:158) ~[na:na]
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:224) ~[na:na]
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:210) ~[na:na]
    at org.springframework.data.mongodb.repository.support.MongoRepositoryFactoryBean.afterPropertiesSet(MongoRepositoryFactoryBean.java:108) ~[na:na]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612) ~[AbstractAutowireCapableBeanFactory.class:4.0.6.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549) ~[AbstractAutowireCapableBeanFactory.class:4.0.6.RELEASE]
    ... 62 common frames omitted
   Caused by: java.lang.ClassCastException: org.springframework.core.DefaultParameterNameDiscoverer cannot be cast to org.springframework.core.ParameterNameDiscoverer
    at org.springframework.data.mapping.model.PreferredConstructorDiscoverer.<clinit>(PreferredConstructorDiscoverer.java:41) ~[na:na]
    ... 78 common frames omitted
I|Starter                                 |Context destruction has began.
I|AnnotationConfigWebApplicationContext   |Closing Root WebApplicationContext: startup date [Fri Sep 05 09:15:09 CEST 2014]; root of context hierarchy
D|DefaultListableBeanFactory              |Returning cached instance of singleton bean 'lifecycleProcessor'
D|DefaultListableBeanFactory              |Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1fbb2adf: defining beans [org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,rootConfig,org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor,org.springframework.context.annotation.ConfigurationClassPostProcessor.enhancedConfigurationProcessor]; root of factory hierarchy

A:

Problem solved.
It was dependencies conflict. Spring framework jars were included in both projects (war which loads pf4j plugins and plugin application itself) and this caused:
Caused by: java.lang.ClassCastException:
    org.springframework.core.DefaultParameterNameDiscoverer
    cannot be cast to org.springframework.core.ParameterNameDiscoverer
    at org.springframework.data.mapping.model.PreferredConstructorDiscoverer.<clinit>
    (PreferredConstructorDiscoverer.java:41)

All works perfectly after exclusion of conflicted jar, in this case it is springframework-core.jar, from plugin application build.

