今天在做dubbo 的时候遇到了一个错误纠结了好长的时间,现在将经验与大家分享。
由于dubbo本身就带有一种容器也就是spring,所以为了提高执行的效率,减少使用的容器 ,我的dubbo服务是通过 dubbo的start方法去启动区管理的,所以没有依赖servlet容器。
在启动程序的时候出现了如下的一段错误
Exception in thread "main" javax.validation.ValidationException: Unable to instantiate Configuration.
at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:279)
at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:110)
...
at org.hibernate.validator.internal.engine.ConfigurationImpl.<init>(ConfigurationImpl.java:110)
at org.hibernate.validator.internal.engine.ConfigurationImpl.<init>(ConfigurationImpl.java:86)
at org.hibernate.validator.HibernateValidator.createGenericConfiguration(HibernateValidator.java:41)
at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:276)
... 2 more
javax.validation.ValidationException: HV000183: Unable to load 'javax.el.ExpressionFactory'
什么原因了,一眼就看出来了,我使用hibernate bean validator ,但是beanvalidator是依赖于与javax validator和javax.el的。说的更加直白一点就是依赖于servlet容器,如果dubbo是交给tomcat或者jetty服务器去管理的,那么OK,没有这个问题,但是我们现在不是,所以我们需要提供错误所提示的jar。
*添加如下所示的jar问题解决,成功启动:*
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>2.2.4</version>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>javax.el</artifactId>
<version>2.2.4</version>
</dependency>