Hibernate spring验证:(portlet)noclassdeffounderror等问题
我正在努力使spring表单验证工作正常。 但是我有一些问题 当我部署我的应用程序时,我得到:Hibernate spring验证:(portlet)noclassdeffounderror等问题,hibernate,spring,validation,Hibernate,Spring,Validation,我正在努力使spring表单验证工作正常。 但是我有一些问题 当我部署我的应用程序时,我得到: Error creating bean wit h name 'org.springframework.validation.beanvalidation.LocalValidatorFactoryBean# 0': Invocation of init method failed; nested exception is java.lang.NoSuchMethod Error: org.slf4j
Error creating bean wit
h name 'org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#
0': Invocation of init method failed; nested exception is java.lang.NoSuchMethod
Error: org.slf4j.helpers.MessageFormatter.format(Ljava/lang/String;Ljava/lang/Ob
ject;)Lorg/slf4j/helpers/FormattingTuple;
Could not initialize class org.hibernate.validator.engine.ConfigurationImpl
当我访问该页面时,我得到:
org.springframework.beans.factory.BeanCreationException: Error creating bean wit
h name 'org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#
0': Invocation of init method failed; nested exception is java.lang.NoClassDefFo
undError: Could not initialize class org.hibernate.validator.engine.Configuratio
nImpl
Bean类:
public class User{
@Min(13)
private int age;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
}
控制器代码段:
@ActionMapping(params = "myAction=validateUser")
public void validateUser(ActionRequest request, ActionResponse response, ModelMap model, @ModelAttribute("user") @Valid User user, BindingResult result ){
if(result.hasErrors()){
for(ObjectError oe : result.getAllErrors()){
System.out.println(oe.getDefaultMessage());
}
} else{
//code
}
}
JSP:
使用者
My userRegistration-portlet.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
">
<mvc:annotation-driven />
<import resource="spring-hibernate.xml"/>
<context:component-scan base-package="com.johndoe.dao" />
<context:component-scan base-package="com.johndoe.model" />
<context:component-scan base-package="com.johndoe.service" />
<context:component-scan base-package="com.johndoe.util" />
<context:component-scan base-package="com.johndoe.controller" />
<bean class="org.springframework.web.portlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
Pom.xml
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-asm</artifactId>
<version>3.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>3.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc-portlet</artifactId>
<version>3.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>3.0.2.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.portlet</groupId>
<artifactId>portlet-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-hibernate3</artifactId>
<version>2.0.8</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.2.7.ga</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.0.2.GA</version>
</dependency>
</dependencies>
org.springframework
春季asm
3.0.2.1发布
org.springframework
春豆
3.0.2.1发布
org.springframework
spring上下文
3.0.2.1发布
org.springframework
弹簧芯
3.0.2.1发布
org.springframework
SpringWebMVCPortlet
3.0.2.1发布
org.springframework
SpringWebMVC
3.0.2.1发布
org.springframework
弹簧网
3.0.2.1发布
org.springframework
弹簧试验
3.0.2.1发布
测试
javax.portlet
portlet api
2
假如
javax.servlet
jstl
1.1.2
塔格利布
标准
1.1.2
javax.servlet
servlet api
2.5
org.springframework
春季冬眠3
2.0.8
org.hibernate
冬眠
3.2.7.ga
org.hibernate
休眠验证器
4.0.2.GA
删除对slf4j
的依赖关系。它的版本不正确。Hibernate定义了一个可传递的依赖项,因此将获取正确的版本。原因:SPR-6817
所以我自己添加了标记。删除它仍然是:org.springframework.beans.factory.Bea nCreationException:创建名为“org.springframework.validatio n.beanvalidation.localvalidatoryFactoryBean#0”的bean时出错:调用init方法失败;嵌套的异常是java.lang.NoSuchMethodError:org.slf4j.helpers.MessageForma tter.format(Ljava/lang/String;Ljava/lang/Object;)Lorg/slf4j/helpers/formatingtu ple;org.springframework.beans.factory.BeanCreationException:创建名为“org.springframework.validation.beanvalidation.LocalValidatoryFactoryBean#0”的bean时出错:调用init方法失败;嵌套异常是java.lang.NoSuchMethod错误:org.slf4j.helpers.MessageFormatter.format(Ljava/lang/String;Ljava/lang/Ob;)Lorg/slf4j/helpers/FormattingTuple@杰克-清洁你的目标目录,和你的雄猫。我想旧的依赖仍然存在。还要检查是否有任何其他依赖项未包含错误版本的slf4j。我检查了依赖项层次结构,唯一引用slf4j api的是hibernate-validator-4.0.2.GA,它引用的是slf4j api 1.5.6。我刚刚扫描了我的liferay文件夹和webapps\root\web inf(root=liferay应用程序的名称)以及该门户的一些其他portlet。就像你建议的那样,我进行了mvn清理,取消了Portlet的部署,关闭了liferay并重新启动了它,但错误仍然存在。localvalidatorfactorybean的noclassdeffounderror,@jack-这不是同一个错误;)这意味着spring-context.jar现在不在类路径上。
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-asm</artifactId>
<version>3.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>3.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc-portlet</artifactId>
<version>3.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>3.0.2.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.portlet</groupId>
<artifactId>portlet-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-hibernate3</artifactId>
<version>2.0.8</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.2.7.ga</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.0.2.GA</version>
</dependency>
</dependencies>