2015-10-06 40 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將不會同步自定義模塊文件夾,如果你還沒有設置爲共享文件夾。

相關問題