2015-10-06 46 views
1

我已经创建了一个自定义的模块在春季XD其中,“类别中号击中Oracle数据库和缓存使用ehcache.Other比目前在XD/lib下我是罐子结果在我的模块中使用“ehcache-2.9.0.jar和ojdbc6-11.1.0.7.0.jar”。我为我的自定义模块创建了UBER jar。尤伯杯罐/ lib目录既包含了额外的罐子,我added.Module上传命令的工作效果很好,当我在XD env.How上传uberjar曾经当我创建流我得到java.lang.NoClassDefFoundError:网/平方英尺/的Ehcache/CacheManager的。堆栈跟踪如下。如果我把ehcache-2.9.0.jar放在xd/lib文件夹中,并重新启动xd,我可以创建流,但它会破坏超级jar的目的。任何建议/解决方案?SpringXD无法找到目前在尤伯杯罐的lib

2015-10-05T21:52:37-0400 1.2.0.RELEASE INFO DeploymentSupervisor-0 zk.ZKStreamDeploymentHandler - Deployment status for stream 'reconPublicationDev': DeploymentStatus{state=failed,error(s)=org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'integrationEvaluationContext': Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: net/sf/ehcache/CacheManager 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:736) 
     at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) 
     at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686) 
     at org.springframework.boot.SpringApplication.run(SpringApplication.java:320) 
     at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:139) 
     at org.springframework.xd.module.core.SimpleModule.initialize(SimpleModule.java:213) 
     at org.springframework.xd.dirt.module.ModuleDeployer.doDeploy(ModuleDeployer.java:217) 
     at org.springframework.xd.dirt.module.ModuleDeployer.deploy(ModuleDeployer.java:200) 
     at org.springframework.xd.dirt.server.container.DeploymentListener.deployModule(DeploymentListener.java:365) 
     at org.springframework.xd.dirt.server.container.DeploymentListener.deployStreamModule(DeploymentListener.java:334) 
     at org.springframework.xd.dirt.server.container.DeploymentListener.onChildAdded(DeploymentListener.java:181) 
     at org.springframework.xd.dirt.server.container.DeploymentListener.childEvent(DeploymentListener.java:149) 
     at org.apache.curator.framework.recipes.cache.PathChildrenCache$5.apply(PathChildrenCache.java:509) 
     at org.apache.curator.framework.recipes.cache.PathChildrenCache$5.apply(PathChildrenCache.java:503) 
     at org.apache.curator.framework.listen.ListenerContainer$1.run(ListenerContainer.java:92) 
     at com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:297) 
     at org.apache.curator.framework.listen.ListenerContainer.forEach(ListenerContainer.java:83) 
     at org.apache.curator.framework.recipes.cache.PathChildrenCache.callListeners(PathChildrenCache.java:500) 
     at org.apache.curator.framework.recipes.cache.EventOperation.invoke(EventOperation.java:35) 
     at org.apache.curator.framework.recipes.cache.PathChildrenCache$10.run(PathChildrenCache.java:762) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.NoClassDefFoundError: net/sf/ehcache/CacheManager 
     at java.lang.Class.getDeclaredMethods0(Native Method) 
     at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) 
     at java.lang.Class.getDeclaredMethods(Class.java:1975) 
     at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:571) 
     at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:488) 
     at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:474) 
     at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:241) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1065) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1038) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getSingletonFactoryBeanForTypeCheck(AbstractAutowireCapableBeanFactory.java:860) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryBean(AbstractAutowireCapableBeanFactory.java:790) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.isTypeMatch(AbstractBeanFactory.java:542) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:436) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:412) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:519) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:512) 
     at org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1052) 
     at org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:227) 
     at org.springframework.integration.config.IntegrationEvaluationContextFactoryBean.afterPropertiesSet(IntegrationEvaluationContextFactoryBean.java:129) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570) 
     ... 34 more 
Caused by: java.lang.ClassNotFoundException: net.sf.ehcache.CacheManager 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
     ... 55 more 

回答

0

我的建议是建立使用Maven插件上色尤伯杯罐子内的爆炸依赖性。在你的情况下,ehcache位于Module Classloader和Spring-Context & Spring-context-support在Parent Classloader上。这会导致bean(类型)注入失败。使用带阴影的插件创建具有必要的依赖性的Uber jar以及Spring-Context & Spring-context-support。这个超级版本的jar将解决你的问题。

0

我会去了解一下下面的事情

1)如果自定义模块是否正确,即上传检查您的自定义模块文件夹,如果尤伯杯罐子是可用的。

2)我会做一个jar -vft <jar file name>,看是否含有违规类的罐子是在尤伯杯罐子肯定。 3)如果我正在运行分布式模式,那么我必须确保custom-modules文件夹在管理员和容器之间共享,而容器节点custom-modules文件夹中有该jar文件。这是非常重要的理解,custom-modules文件夹必须共享或管理和容器之间的目录内容保持同步通过外部手段 - XD将不会同步自定义模块文件夹,如果你还没有设置为共享文件夹。

相关问题