2017-03-03 61 views
1

我已經通過行家管理的春天JMS的項目,我會遇到以下問題時,jar文件的部署(Java的罐子jarname.jar):生成與Maven可執行的JAR:類未發現異常

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'outgoingMessageEventListener' defined in class path resource [deltaMessageListenerContainer.xml]: Cannot resolve reference to bean 'deltaBankMessageService' while setting bean property 'deltaBankMessageService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'deltaBankMessageService' defined in class path resource [data-access.xml]: Cannot resolve reference to bean 'messageOutDao' while setting bean property 'messageOutDao'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageOutDao' defined in class path resource [data-access.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.delta.jms.message.persistence.ibatis.SqlMapMessageOutDao]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: com/ibatis/sqlmap/client/SqlMapExecutor at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:308) at org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:947) at org.springframework.context.support.AbstractApplicationContext.registerListeners(AbstractApplicationContext.java:701) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:377) at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:139) at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:93) at com.delta.jms.server.bootstrap.Startup.main(Startup.java:26) Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'deltaBankMessageService' defined in class path resource [data-access.xml]: Cannot resolve reference to bean 'messageOutDao' while setting bean property 'messageOutDao'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageOutDao' defined in class path resource [data-access.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.delta.jms.message.persistence.ibatis.SqlMapMessageOutDao]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: com/ibatis/sqlmap/client/SqlMapExecutor at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269) ... 19 more Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageOutDao' defined in class path resource [data-access.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.delta.jms.message.persistence.ibatis.SqlMapMessageOutDao]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: com/ibatis/sqlmap/client/SqlMapExecutor at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:883) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269) ... 32 more Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.delta.jms.message.persistence.ibatis.SqlMapMessageOutDao]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: com/ibatis/sqlmap/client/SqlMapExecutor at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:115) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877) ... 43 more Caused by: java.lang.NoClassDefFoundError: com/ibatis/sqlmap/client/SqlMapExecutor at org.springframework.orm.ibatis.support.SqlMapClientDaoSupport.(SqlMapClientDaoSupport.java:46) at com.delta.jms.message.persistence.ibatis.SqlMapMessageOutDao.(SqlMapMessageOutDao.java:23) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100) ... 45 more Caused by: java.lang.ClassNotFoundException: com.ibatis.sqlmap.client.SqlMapExecutor at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 52 more

謝謝。

的Mac


謝謝羅納德。我現在有這個新的錯誤:

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'outgoingMessageEventListener' defined in class path resource [deltaMessageListenerContainer.xml]: Cannot resolve reference to bean 'deltaBankMessageService' while setting bean property 'deltaBankMessageService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'deltaBankMessageService' defined in class path resource [data-access.xml]: Cannot resolve reference to bean 'jmsSender' while setting bean property 'jmsSender'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jmsSender' defined in class path resource [jmsConnectionFactory.xml]: Cannot resolve reference to bean 'jmsQueueTemplate' while setting bean property 'jmsTemplate102'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jmsQueueTemplate' defined in class path resource [jmsConnectionFactory.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: javax/jms/JMSException at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:308) at org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:947) at org.springframework.context.support.AbstractApplicationContext.registerListeners(AbstractApplicationContext.java:701) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:377) at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:139) at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:93) at com.delta.jms.server.bootstrap.Startup.main(Startup.java:26) Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'deltaBankMessageService' defined in class path resource [data-access.xml]: Cannot resolve reference to bean 'jmsSender' while setting bean property 'jmsSender'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jmsSender' defined in class path resource [jmsConnectionFactory.xml]: Cannot resolve reference to bean 'jmsQueueTemplate' while setting bean property 'jmsTemplate102'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jmsQueueTemplate' defined in class path resource [jmsConnectionFactory.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: javax/jms/JMSException at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269) ... 19 more Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jmsSender' defined in class path resource [jmsConnectionFactory.xml]: Cannot resolve reference to bean 'jmsQueueTemplate' while setting bean property 'jmsTemplate102'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jmsQueueTemplate' defined in class path resource [jmsConnectionFactory.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: javax/jms/JMSException at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269) ... 32 more Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jmsQueueTemplate' defined in class path resource [jmsConnectionFactory.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: javax/jms/JMSException at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:883) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269) ... 45 more Caused by: java.lang.NoClassDefFoundError: javax/jms/JMSException at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2493) at java.lang.Class.getConstructor0(Class.java:2803) at java.lang.Class.getDeclaredConstructor(Class.java:2053) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:54) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877) ... 56 more Caused by: java.lang.ClassNotFoundException: javax.jms.JMSException at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 62 more

回答

0

我要感謝你,羅納德和約翰尼斯,對你有所幫助!其實,我確實發現了主要問題!我在pom.xml中創建了一些依賴項,並將這些jar文件的絕對路徑放在標記中。當我將這個項目打包爲一個可執行的jar文件時,它不會將這些依賴項放在裏面!所以爲了避免這種情況,我將這些特定的jar文件上傳到Nexus服務器(我已經有一個),並且我將它們聲明爲pom.xml中的範圍編譯,就這些!我克服了這些「依賴」錯誤,但是我又遇到了另一種錯誤!

2

看起來你缺少一些依賴瓶。當我得到這樣的錯誤,我總是做

  1. 搜索(谷歌)爲包含缺少的類,你的情況罐子com.ibatis.sqlmap.client.SqlMapExecutor

  2. 添加的jar到您的Maven的pom.xml的依賴

還要注意的是,有時候,如果你有同樣的罐子的兩個版本在類路徑的某處可能會給你這個問題。在此scnerio中,可以打開詳細模式以查看在運行時拾取哪個版本

+0

謝謝Yohannes的幫助。 – Mac

2

顯然,您的類路徑中沒有com.ibatis.sqlmap.client.SqlMapExecutor。你使用maven作爲你的構建工具,所以檢查你的POM的依賴關係。

我不知道哪個depenceny你確實需要,但它應該是這樣的:

<dependency> 
    <groupId>org.apache.ibatis</groupId> 
    <artifactId>ibatis-sqlmap</artifactId> 
    <version>2.3.0</version> 
</dependency> 
+0

謝謝羅納德的回答。我忘記告訴你,如果我從Eclipse運行程序,我就沒有這個問題!我不知道爲什麼當我運行jar時,我得到了這個錯誤?! – Mac

+0

Eclipse中的類路徑包括:當前Java項目和通過當前項目的屬性中的Java構建路徑或構建路徑中的任何庫添加到類路徑中的任何Java項目。這就是爲什麼它可能在Eclipse中運行,而不是作爲可執行jar。你必須將所有依賴的罐子包裝到你的罐子裏。所以問題依然存在。你是否在你的pom中包含了缺失的依賴項? –

+0

謝謝羅納德,我告訴過你,我添加了新的依賴關係,舊的錯誤消失了,但是在上面添加了新的錯誤。 – Mac