2014-06-24 21 views
61
Ben hazırda doğrulayıcı ile çok basit bir uygulama yazmaya çalışıyorum

:javax.validation.ValidationException: HV000183: yüklenemiyor 'javax.el.ExpressionFactory'

benim adımlar: pom.xml'Bu

eklenti aşağıdaki bağımlılık :

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

yazma kodu:

class Configuration { 
    Range(min=1,max=100) 
    int threadNumber; 
    //... 

    public static void main(String[] args) { 
     ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); 

     Validator validator = factory.getValidator(); 

     Configuration configuration = new Configuration(); 
     configuration.threadNumber = 12; 
      //... 

     Set<ConstraintViolation<Configuration>> constraintViolations = validator.validate(configuration); 
     System.out.println(constraintViolations); 

    } 
} 

Ve şu stacktra alır hl:

Exception in thread "main" javax.validation.ValidationException: Unable to instantiate Configuration. 
    at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:279) 
    at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:110) 
    ... 
    at org.hibernate.validator.internal.engine.ConfigurationImpl.<init>(ConfigurationImpl.java:110) 
    at org.hibernate.validator.internal.engine.ConfigurationImpl.<init>(ConfigurationImpl.java:86) 
    at org.hibernate.validator.HibernateValidator.createGenericConfiguration(HibernateValidator.java:41) 
    at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:276) 
    ... 2 more 

Neyi hatalıyım? Bu pom.xml için aşağıdaki bağımlılıklar ekledikten sonra çalışıyor

+0

Yükseltme hazırda doğrulayıcı için '5.2.4.Final' bana sorun çözüldü. – fracz

+0

@fracz Hibernate-validator = '5.2.4.Final' var ve istisna hala var. –

cevap

113

:

<dependency> 
    <groupId>javax.el</groupId> 
    <artifactId>javax.el-api</artifactId> 
    <version>2.2.4</version> 
</dependency> 
<dependency> 
    <groupId>org.glassfish.web</groupId> 
    <artifactId>javax.el</artifactId> 
    <version>2.2.4</version> 
</dependency> 

Getting started with Hibernate Validator

+4

Bean Validation 1.1, sınıf yolunda Expression Language bağımlılıklarını gerektirir. Ayrıca bakınız http://hibernate.org/validator/documentation/getting-started/ – Hardy

+0

\t org.glassfish.web \t javax.el \t 2.2.4 \t çalışma zamanı zaten hazırda beklemede doğrulayıcı olarak javax.el-api – mvera

+7

javax.el javax.el-api 2.3.1 ' \t 2,2 sorunumu çözdü beni – ArtB

48

tıpkı

<dependency> 
    <groupId>javax.el</groupId> 
    <artifactId>javax.el-api</artifactId> 
    <version>2.2.4</version> 
</dependency> 
+1

Neden hazırda bekletici bu bağımlılığa güvenmiyor? –

+0

Neden olduğunu bilmiyorum ama daha iyi olurdu –

+0

@ thomas.mc.work Ben geçiş bağımlılık sorunları önlemek için düşünüyorum – gstackoverflow

4

Eğer sunucu çalışma zamanı olarak tomcat kullanıyor ve bu hatayı içinde alırsanız testler (testler sırasında tomcat çalışma zamanı olmadığı için), cam elyafın yerine tomcat el çalışma zamanını dahil etmeyi anlamlı hale getirdiğinden sh). Bu şöyle olur:

<dependency> 
     <groupId>org.apache.tomcat</groupId> 
     <artifactId>tomcat-el-api</artifactId> 
     <version>8.5.14</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.tomcat</groupId> 
     <artifactId>tomcat-jasper-el</artifactId> 
     <version>8.5.14</version> 
     <scope>test</scope> 
    </dependency> 
5

Hibernate validator documentation page ilgili olarak, bir JSR-341 uygulanmasına bağımlılığı tanımlamak zorunda:

<dependency> 
    <groupId>org.glassfish</groupId> 
    <artifactId>javax.el</artifactId> 
    <version>3.0.1-b08</version> 
</dependency> 
+0

Teşekkürler @herau, çok zaman kazandı. – Bodil