2

我想创建一个将 Neo4j 与 Spring Data 结合使用的 Web 应用程序。我正在使用 Maven 来处理依赖项和构建,但由于spring-data-neo4j.

当我包含 spring-data-neo4j 时,它包含javax.validation,但是当包含它时,我在使用<mvc:annotation-driven />@Controller 和 @RequestMapping 注释时遇到问题,这会导致此问题:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#0': Invocation of init method failed; nested exception is javax.validation.ValidationException: Unable to find a default provider

如果我从 中排除javax.validation作为依赖项,则spring-data-neo4j在尝试访问时会收到验证器错误Neo4jTemplate

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'indexController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.data.neo4j.support.Neo4jTemplate org.neuralsandbox.controllers.IndexController.neo4jTemplate; nested exception is java.lang.NoClassDefFoundError: javax/validation/Validator

有没有办法解决这个问题?

4

2 回答 2

4

验证 API 似乎存在运行时依赖项。它通过简单地添加以下运行时依赖项解决了我的问题。

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.1.0.Final</version>
    <scope>runtime</scope>
</dependency>

希望这也能解决您的问题。

于 2013-05-29T13:36:18.017 回答
3

一种可能的选择,尤其是当您真正需要javax.validation功能时,是将javax.validation(例如 Hibernate Validator)的实现添加到类路径中。

如果您不需要javax.validation,您应该能够通过创建一个虚拟对象org.springframework.validation.Validator并将其配置为<mvc:annotation-driver validator = "..." />.

于 2012-04-22T09:00:51.857 回答