dubbo部署到tomcat启动后显示管理界面后点击任何按钮都报错,错误如下

炒冰zcb 发布于 2016/04/28 20:34
阅读 936
收藏 0
java.lang.NoClassDefFoundError: Could not initialize class com.alibaba.citrus.util.internal.Servlet3Util
com.alibaba.citrus.service.requestcontext.impl.RequestContextChainingServiceImpl.getRequestContext(RequestContextChainingServiceImpl.java:246)
com.alibaba.citrus.webx.support.AbstractWebxRootController.getRequestContext(AbstractWebxRootController.java:352)
com.alibaba.citrus.webx.support.AbstractWebxRootController.service(AbstractWebxRootController.java:148)
com.alibaba.citrus.webx.servlet.WebxFrameworkFilter.doFilter(WebxFrameworkFilter.java:152)
com.alibaba.citrus.webx.servlet.FilterBean.doFilter(FilterBean.java:148)
com.alibaba.citrus.webx.servlet.SetLoggingContextFilter.doFilter(SetLoggingContextFilter.java:61)
com.alibaba.citrus.webx.servlet.FilterBean.doFilter(FilterBean.java:148)


jdk是1.8  改了一些dubbo后台的依赖引入:

1、webx的依赖改为3.1.6版;

    <dependency>
        <groupId>com.alibaba.citrus</groupId>
        <artifactId>citrus-webx-all</artifactId>
        <version>3.1.6</version>
    </dependency>
2、添加velocity的依赖,我用了1.7;

    <dependency>
        <groupId>org.apache.velocity</groupId>
        <artifactId>velocity</artifactId>
        <version>1.7</version>
    </dependency>
3、对依赖项dubbo添加exclusion,避免引入旧spring

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dubbo</artifactId>
        <version>${project.parent.version}</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
4、webx已有spring 3以上的依赖,因此注释掉dubbo-admin里面的spring依赖

    <!--<dependency>-->
        <!--<groupId>org.springframework</groupId>-->
        <!--<artifactId>spring</artifactId>-->
    <!--</dependency>-->

启动到dubbo后台首页正常,点击任何按钮就报错了


确认没有引进spring  3以下版本,没有citrus-webx-all冲突包,citrus-webx-all的jar包有在lib目录下
请大神帮忙解决下
加载中
0
南湖船老大
南湖船老大
确认没有引进spring 3以下版本

什么意思??我记得dubbo 本来就不支持 spring 3啊.

炒冰zcb
不是这问题,我用的是2.5.4版本的,2.5.3才不兼容
0
南湖船老大
南湖船老大
当当有个dubbox,这个项目才是把dubbox的spring升级到3
0
炒冰zcb

看了下Servlet3Util源码

package com.alibaba.citrus.util.internal;  import static com.alibaba.citrus.util.Assert.*; import static com.alibaba.citrus.util.CollectionUtil.*;  import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.EventListener; import java.util.List; import javax.servlet.ServletOutputStream; import javax.servlet.WriteListener; import javax.servlet.http.HttpServletRequest;  import net.sf.cglib.reflect.FastClass; import net.sf.cglib.reflect.FastMethod;  /**  * Servlet 3.0 Support - 即使在非servlet 3.0的环境中,也不会出错。  * 此类会引用如下几个Servlet 3.0的接口。在Servlet 2.5的环境中,接口由<code>citrus-common-servlet</code>项目提供。  * <ul>  * <li><code>WriteListener</code></li>  * </ul>  *  * @author Michael Zhou  */ public class Servlet3Util {
注释说明需要使用servlet3.0的版本,所以换了tomcat8,启动后正常

servlet2.5版本是没有WriteListener类的

返回顶部
顶部