• dubbo 常见错误


    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

  • 相关阅读:
    对svn分支合并类型和深度的理解
    SVN中trunk,branches,tags用法详解
    如何从dump中查找ASP.NET Session的数据【转】
    c++学习笔记
    柳永教授嫖娼案庭审记录
    C++资源之不完全导引(转载)
    不讨老婆之“不亦快哉”(三十三则)(李敖)
    在一个ajax extender 工程中实现多个 ajax extender 控件的方法
    Creating a new extender(zz)
    打标签
  • 原文地址:https://www.cnblogs.com/dreammyle/p/5776512.html
Copyright © 2020-2023  润新知