Spring javax.validation.ValidationException:调用TraversableResolver.isRecable()引发异常
我的应用程序出现以下异常,对于Spring中的bean验证,我使用的是Spring4.0.2版本 我正在使用weblogic11g应用服务器 javax.validation.ValidationException:调用TraversableResolver.isRecable()引发异常 位于org.hibernate.validator.engine.ValidatorImpl.isValidationRequired(ValidatorImpl.java:773) 位于org.hibernate.validator.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:331) 位于org.hibernate.validator.engine.validateImpl.validateConstraintsForRedefinedDefaultGroup(validateImpl.java:278) 位于org.hibernate.validator.engine.validateImpl.validateConstraintsForCurrentGroup(validateImpl.java:260) 位于org.hibernate.validator.engine.validateImpl.validateInContext(validateImpl.java:213) 截断的。有关完整的堆栈跟踪,请参阅日志文件 原因:javax.persistence.PersistenceException:无法从META-INF/services加载提供程序 位于javax.persistence.spi.PersistenceProviderResolverHolder$DefaultPersistenceProviderResolver.getPersistenceProviders(PersistenceProviderResolverHolder.java:121) 在javax.persistence.persistence$persistenceutimpl.isLoaded(persistence.java:278) 位于org.hibernate.validator.engine.resolver.jpatransablesolver.isReachable(jpatransablesolver.java:33) 位于org.hibernate.validator.engine.resolver.DefaultTraversableResolver.isRecable(DefaultTraversableResolver.java:112) 位于org.hibernate.validator.engine.resolver.SingleThreadCachedTraversableResolver.isRecable(SingleThreadCachedTraversableResolver.java:47) 截断的。有关完整的堆栈跟踪,请参阅日志文件 原因:java.lang.ClassCastException:org.apache.openjpa.persistence.PersistenceProviderImpl无法强制转换为javax.persistence.spi.PersistenceProvider 位于javax.persistence.spi.PersistenceProviderResolverHolder$DefaultPersistenceProviderResolver.getPersistenceProviders(PersistenceProviderResolverHolder.java:110) 在javax.persistence.persistence$persistenceutimpl.isLoaded(persistence.java:278) 位于org.hibernate.validator.engine.resolver.jpatransablesolver.isReachable(jpatransablesolver.java:33) 位于org.hibernate.validator.engine.resolver.DefaultTraversableResolver.isRecable(DefaultTraversableResolver.java:112) 位于org.hibernate.validator.engine.resolver.SingleThreadCachedTraversableResolver.isRecable(SingleThreadCachedTraversableResolver.java:47) 截断的。有关完整的堆栈跟踪,请参阅日志文件 这是我的POJO课程Spring javax.validation.ValidationException:调用TraversableResolver.isRecable()引发异常,spring,Spring,我的应用程序出现以下异常,对于Spring中的bean验证,我使用的是Spring4.0.2版本 我正在使用weblogic11g应用服务器 javax.validation.ValidationException:调用TraversableResolver.isRecable()引发异常 位于org.hibernate.validator.engine.ValidatorImpl.isValidationRequired(ValidatorImpl.java:773) 位于org.hibern
import java.util.Date;
import javax.validation.constraints.Digits;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;
public class TestVO extends BaseVO {
private static final long serialVersionUID = 1L;
@Length(max=18)
@NotNull
@NotEmpty
@Pattern(regexp = "[a-zA-Z0-9]*")
private String Id;
public String getId() {
return Id;
}
public void setId(String Id) {
this.Id = Id;
}
}
这是我的验证器类
import javax.validation.ConstraintViolation;
import javax.validation.Validator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class DataValidator {
@Autowired(required = true)
private Validator validator;
public Set<ConstraintViolation<Object>> validate(Object tvo) {
return this.validator.validate(tvo);
}
}
import javax.validation.ConstraintViolation;
导入javax.validation.Validator;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.stereotype.Component;
@组成部分
公共类数据验证器{
@自动连线(必需=真)
私人验证器;
公共集验证(对象tvo){
返回此.validator.validate(tvo);
}
}
这是我试图验证POJO的控制器类
@Autowired
private DataValidator dValidator;
TestVO testVO = testBO.getTest(id);
Set<ConstraintViolation<Object>> violations = this.dValidator.validate(testVO);
@Autowired
专用数据验证程序dValidator;
TestVO TestVO=testBO.getTest(id);
设置冲突=this.dValidator.validate(testVO);
我已经用下面的验证器更新了application-context.xml
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
I have below Jar's in place in my WEB-INF/lib
hibernate-validator-4.0.1.GA.jar
validation-api-1.0.0.GA.jar
j2ee.jar
javax.persistence_1.0.0.0_1-0-2.jar
commons-logging-1.1.1.jar
我的WEB-INF/lib中有下面的Jar
hibernate-validator-4.0.1.GA.jar
validation-api-1.0.0.GA.jar
j2ee.jar
javax.persistence_1.0.0.0_1-0-2.jar
commons-logging-1.1.1.jar
任何帮助都将不胜感激 这个问题通常发生在加载同名类而从不同类加载器加载类时引起的冲突。我建议您检查任何重复的持久性jar文件(在您的示例中是javax.persistence\u 1.0.0\u 1-0-2.jar)并将其删除。如果您使用Hibernate字节码增强的某些配置,您也可能会遇到此异常。请参见HI Meriton Husaj感谢您的回答,我尝试删除javax.persistence_1.0.0.0_1-0-2.jar文件,但没有成功。最后,在类路径中添加了新的Hibernate版本jar后,它得到了修复。