JDK: 1.8.0_131
Tomcat: 8.0.27.0
Hibernate Validator: 6.0.7.Final + toutes les dépendances téléchargées depuis: Hibernate Validator 6
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public AccountSyncResponse excute(AccountSyncRequest account_sync_request_)
{
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<AccountSyncRequest>> violations = validator.validate(account_sync_request_);
.
.
.
.
AccountSyncResponse _AccountSyncResponse = new AccountSyncResponse();
return _AccountSyncResponse;
}
Le code échoue sur Validation.buildDefaultValidatorFactory()
à l'exception:
Java.lang.NoSuchMethodError: javax.validation.BootstrapConfiguration.getClockProviderClassName()Ljava/lang/String;
at org.hibernate.validator.internal.xml.ValidationBootstrapParameters.<init>(ValidationBootstrapParameters.Java:63)
at org.hibernate.validator.internal.engine.ConfigurationImpl.parseValidationXml(ConfigurationImpl.Java:527)
at org.hibernate.validator.internal.engine.ConfigurationImpl.buildValidatorFactory(ConfigurationImpl.Java:328)
at javax.validation.Validation.buildDefaultValidatorFactory(Validation.Java:110)
Il semble que le mauvais fichier JAR soit utilisé mais je ne peux pas déterminer lequel.
J'ai eu ce même problème après la mise à niveau de Spring Boot 1.5.x vers Spring Boot 2. La solution était de mettre à niveau Java EE 7 vers Java EE 8:
De:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
À:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>8.0</version>
<scope>provided</scope>
</dependency>