1. Caused by: java.lang.reflect.MalformedParameterizedTypeException
或 Caused by: java.lang.NoSuchMethodError: org.springframework.beans.factory.BeanFactory.getBean
啟動時報錯,原因是dubbo 依賴 spring 2.5.6.SEC03,而我項目中有用spring 3.2.4.RELEASE,所以導致沖突。 在maven中把dubbo中的spring依賴去除就可以了。
如果你們項目中也報這個錯,很可能也是因為jar包沖突造成的
<dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <exclusions> <exclusion> <artifactId>spring</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> </dependency>
2. Caused by: java.lang.IllegalStateException: Context namespace element 'annotation-config' and its parser class [org.springframework.context.annotation.AnnotationConfigBeanDefinitionParser] are only available on JDK 1.5 and higher
at org.springframework.context.config.ContextNamespaceHandler$1.parse(ContextNamespaceHandler.java:65)
at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:69)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1297)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1287)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:135)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:92)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:507)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:398)
... 22 more
錯誤原因:http://stackoverflow.com/questions/23813369/spring-java-error-namespace-element-annotation-config-on-jdk-1-5-and-high
因為使用了 jdk1.8, 而dubbo 依賴 Spring 2.5 ,而Spring2.5僅僅支持 jdk1.5 到 jdk 1.7, 所以jdk 1.8 不被識別,所以報錯。
3. Caused by: org.xml.sax.SAXParseException; lineNumber: 9; columnNumber: 46; cvc-complex-type.2.4.c: 通配符的匹配很全面, 但無法找到元素 'dubbo:application' 的聲明。
該錯誤是因為沒有引入 dubbo jar包。加上依賴就行了:
<dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <exclusions> </dependency>
4. Unsupported major.minor version 52.0 (unable to load class
出現該錯誤是由於class編譯器的JDK版本高於運行期的JDK版本。
比如我在運行Tomcat servlet時出現該錯誤,是由於tomcat運行時是1.7的JDK,Eclipse編譯時則是1.8
修改方法:保證編譯器和運行期的JDK版本一致。
5. Dubbo與spring整合的xml配置文件報錯,無法獲取dtd文件
解決方式:
在dubbo的開源項目上找到xsd文件:
https://github.com/alibaba/dubbo
eclispe-->window-->preferences-->xml catalog-->add 注意KEY 需要以/dubbo.xsd結尾,如下圖所示
6. [0518 19:36:41 354 ERROR] [main] web.context.ContextLoader - Context initialization failed
Caused by: com.alibaba.dubbo.remoting.RemotingException: Failed to bind NettyServer on /127.0.0.1:18191
Caused by: org.jboss.netty.channel.ChannelException: Failed to bind to: /0.0.0.0:18191
Caused by: java.net.BindException: 地址已在使用
造成這種情況的原因是spring context 初始化兩次導致dubbo端口被占用
修改 tomcat 的 server.xml
不正常的:
<Host name="localhost" debug="0" appBase="/data/www/ROOT/xxx" unpackWARs="true" autoDeploy="true" deployOnStartup="true" xmlValidation="false" xmlNamespaceAware="false" > <Context path="" docBase="xxxxx" debug="0" reloadable="false"/> </Host>
正常的:
<Host name="localhost" debug="0" appBase="/data/www/ROOT/xxx" unpackWARs="true" autoDeploy="false" deployOnStartup="false" xmlValidation="false" xmlNamespaceAware="false" > <Context path="" docBase="xxxxx" debug="0" reloadable="false"/> </Host>
autoDeploy:如果此項設為true,表示Tomcat服務處於運行狀態時,能夠監測appBase下的文件,如果有新有web應用加入進來,會自運發布這個WEB應用。
unpackWARs:如果此項設置為true,表示把WEB應用的WAR文件先展開為開放目錄結構后再運行。如果設為false將直接運行為WAR文件。
deployOnStartup:如果此項設為true,表示Tomcat服務器啟動時會自動發布appBase目錄下所有的Web應用。
參考文章:http://blog.sina.com.cn/s/blog_6c969b4a0102vm6g.html
http://blog.csdn.net/jingyulanye/article/details/51451416
http://www.cnblogs.com/digdeep/p/5268779.html