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目录下
请大神帮忙解决下
确认没有引进spring3以下版本
什么意思??我记得dubbo本来就不支持spring3啊.
不是这问题,我用的是2.5.4版本的,2.5.3才不兼容当当有个dubbox,这个项目才是把dubbox的spring升级到3看了下Servlet3Util源码
packagecom.alibaba.citrus.util.internal ; importstaticcom.alibaba.citrus.util.Assert.* ; importstaticcom.alibaba.citrus.util.CollectionUtil.* ; importjava.io.IOException ; importjava.lang.reflect.InvocationTargetException ; importjava.lang.reflect.Method ; importjava.util.EventListener ; importjava.util.List ; importjavax.servlet.ServletOutputStream ; importjavax.servlet.WriteListener ; importjavax.servlet.http.HttpServletRequest ; importnet.sf.cglib.reflect.FastClass ; importnet.sf.cglib.reflect.FastMethod ; /** *Servlet3.0Support -即使在非 servlet3.0 的环境中,也不会出错。 * 此类会引用如下几个 Servlet3.0 的接口。在 Servlet2.5 的环境中,接口由 <code>citrus-common-servlet</code> 项目提供。 *<ul> *<li><code>WriteListener</code></li> *</ul> * *@authorMichaelZhou */ publicclassServlet3Util{注释说明需要使用servlet3.0的版本,所以换了tomcat8,启动后正常
servlet2.5版本是没有WriteListener类的
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。