Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Exception 瓦丁7-豆验证_Exception_Jpa_Vaadin_Classnotfoundexception_Bean Validation - Fatal编程技术网

Exception 瓦丁7-豆验证

Exception 瓦丁7-豆验证,exception,jpa,vaadin,classnotfoundexception,bean-validation,Exception,Jpa,Vaadin,Classnotfoundexception,Bean Validation,我一直在试瓦丁7。首先,我必须承认我在Vaadin是个安静的笨蛋,对JAVA持久性不太熟悉。因此,我试图学习bean验证以及如何使用它。我已经学习了几个教程,但是很难决定哪一个是最新的,对Vaadin 7来说是正确的。尽管如此,我还是尝试下载并使用JPA容器和BeanValidator,但我无法让它工作。以下是我正在使用的代码: package com.example.firstvaadin; import java.io.Serializable; import org.hibernate

我一直在试瓦丁7。首先,我必须承认我在Vaadin是个安静的笨蛋,对JAVA持久性不太熟悉。因此,我试图学习bean验证以及如何使用它。我已经学习了几个教程,但是很难决定哪一个是最新的,对Vaadin 7来说是正确的。尽管如此,我还是尝试下载并使用JPA容器和BeanValidator,但我无法让它工作。以下是我正在使用的代码:

package com.example.firstvaadin;

import java.io.Serializable;

import org.hibernate.validator.constraints.Email;
import javax.validation.constraints.*;

public class RegisterBean implements Serializable{

    public  RegisterBean(String email){
        this.email = email;
    }

    @Size(min = 5, max = 50)
    private String email;

    public void setEmail(String email) {
        this.email = email;
    }

    public String getEmail() {
        return email;
    }
}

classnotfound异常已消失,但现在有一个新异常:

java.lang.NoSuchMethodError: getParameterNameProvider()Ljavax/validation/ParameterNameProvider; 在 org.hibernate.validator.internal.engine.validatoryImpl.(validatoryImpl.java:113) 在 org.hibernate.validator.HibernateValidator.buildValidatorFactory(HibernateValidator.java:45) 在 org.hibernate.validator.internal.engine.configurationmpl.buildValidatorFactory(configurationmpl.java:217) 在 validation.validation.buildDefaultValidatorFactory(validation.java:111) 在 com.vaadin.data.validator.BeanValidator.getJavaxBeanValidatorFactory(BeanValidator.java:167) 在 com.vaadin.data.validator.BeanValidator.getJavaxBeanValidator(BeanValidator.java:182) 在 com.vaadin.data.validator.BeanValidator.validate(BeanValidator.java:115) 在com.vaadin.ui.AbstractField.validate(AbstractField.java:935)上 com.vaadin.ui.AbstractField.validate(AbstractField.java:900)位于 com.vaadin.ui.AbstractField.getErrorMessage(AbstractField.java:1009) 在 com.vaadin.ui.AbstractComponent.beforeClientResponse(AbstractComponent.java:650) 在 com.vaadin.ui.AbstractField.beforeClientResponse(AbstractField.java:1643) 在 com.vaadin.ui.AbstractTextField.beforeClientResponse(AbstractTextField.java:100) 在 com.vaadin.server.AbstractCommunicationManager.writeUidlResponse(AbstractCommunicationManager.java:799) 在 AbstractCommunicationManager.paintAfterVariableChanges(AbstractCommunicationManager.java:728) 在 com.vaadin.server.AbstractCommunicationManager.handleuidRequest(AbstractCommunicationManager.java:599) 位于com.vaadin.server.VaadinServlet.service(VaadinServlet.java:315) 位于com.vaadin.server.VaadinServlet.service(VaadinServlet.java:201) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:728) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 运行(Thread.java:680)


我认为您需要将validation-api-1.0.0.GA.jar添加到WEB-INF/lib中


我不知道是否存在任何其他依赖项。

您不需要hibernate-validator-annotation-processor-5.0.0.Final.jar作为运行时依赖项。这是一个开发库,有助于避免在开发过程中错误放置约束

关于验证api,删除validation-api-1.0.0.GA.jar是可行的,因为您要添加同一库的两个不同版本。validation-api-1.0.0.GA.jar是Bean validation 1.0的api版本。这与Hibernate Validator 4.3兼容


validation-api-1.1.0.Final.jar是Bean validation 1.1 api,它与Hibernate Validator 5.x保持一致。由于使用后者,因此需要Bean Validation 1.1 API。就这么简单。

我相信您已经解决了您的问题,但是对于其他来的这么晚的人(像我一样)以及使用Vaadin 7框架的人来说,Vaadin Bean验证器与Vaadin 7不兼容,只有Vaadin 6与他们的下载页面中提到的一样:

即使在他们自己的演示(JPA容器地址簿演示)中,他们也在pom.xml中使用hibernate验证器:

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>4.2.0.Final</version>
    </dependency>

org.hibernate
休眠验证器
4.2.0.4最终版本

希望这能像帮助我一样帮助其他人。

您需要在项目中添加更多依赖项。我解决了这个问题:

    <!--- Dependencies for validating Beans in Vaadin -->
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>1.1.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.logging</groupId>
        <artifactId>jboss-logging</artifactId>
        <version>3.2.1.Final</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.10</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.10</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>5.1.3.Final</version>
    </dependency>

javax.validation
验证api
1.1.0.1最终版本
org.jboss.logging
jboss日志
3.2.1.最终版本
org.slf4j
slf4j-log4j12
1.7.10
org.slf4j
slf4j简单
1.7.10
org.hibernate
休眠验证器
5.1.3.最终版本
有了这个,就够了!您可以指定将
消息
字段放入
javax.validation.constraints
符号中的消息,或将国际化的消息放入项目属性中,查看
消息
的默认值,如
javax.validation.constraints.Size.message
classmate-0.8.0.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
hibernate-search-engine-4.3.0.Alpha1.jar
hibernate-search-orm-4.3.0.Alpha1.jar
hibernate-validator-5.0.0.Final.jar
hibernate-validator-annotation-processor-5.0.0.Final.jar
hibernate-validator-cdi-5.0.0.Final.jar
javax.el-2.2.4.jar
javax.el-api-2.2.4.jar
jboss-logging-3.1.1.GA.jar
joda-time-2.1.jar
jsoup-1.7.1.jar
log4j-1.2.17.jar
mysql-connector-java-5.1.22-bin.jar
vaadin-sqlcontainer-1.1.0.jar
validation-api-1.0.0.GA.jar
validation-api-1.1.0.Final.jar
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>4.2.0.Final</version>
    </dependency>
    <!--- Dependencies for validating Beans in Vaadin -->
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>1.1.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.logging</groupId>
        <artifactId>jboss-logging</artifactId>
        <version>3.2.1.Final</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.10</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.10</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>5.1.3.Final</version>
    </dependency>