当前位置: 首页 > 面试题库 >

javax.validation.ValidationException:HV000183:无法加载'javax.el.E​​xpressionFactory'

扶誉
2023-03-14
问题内容

我尝试使用hibernate验证器编写非常简单的应用程序:

我的步骤:

在pom.xml中添加以下依赖项:

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

编写代码:

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);

    }
}

我得到以下stacktrace:

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

我怎么了


问题答案:

添加到pom.xml以下依赖项后,它可以工作:

<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>

Hibernate Validator入门:

Hibernate Validator还需要实现统一表达式语言(JSR
341
)来评估约束违例消息中的动态表达式。当您的应用程序在WildFly之类的Java
EE容器中运行时,该容器已经提供了EL实现。但是,在Java SE环境中,必须将实现添加为对POM文件的依赖。例如,您可以添加以下两个依赖项以使用JSR
341 参考实现:

<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>


 类似资料:
  • 这是密码。没有警告,文件正常。

  • 问题内容: 当我尝试运行Hibernate时,我在控制台中收到以下消息。 但是hibernate状态很好。我的项目有什么问题吗?我使用Eclipse(Helios),Hibernate 3.6.8。我使用这些jar文件:antlr-2.7.6,commons- collections-3.1,dom4j-1.6.1,hibernate3,hibernate- jpa-2.0-api-1.0.1.F

  • 我正在运行RSTudio版本1.1.442和r3.5。当我尝试加载rJava时,我得到以下错误; 库(rJava)错误:“r Java”的包或命名空间加载失败:“r Java”的.OnLoad在loadNamespace()中失败,详细信息:调用:dyn.load(文件,DLLpath=DLLpath,...)错误:无法加载共享对象“/library/framework/r.framework/v

  • 应用程序正在启动。获取数据。请稍候...线程“main”java.lang.UnsatisfiedLinkError中出现(约10s)异常:无法加载SWT库。原因:java.library.path中没有swt-cocoa-4236。path中没有swt-cocoa不能加载库:C:\users\andrew.swt\lib\win32\x86_64\swt-cocoa.dll不能加载库:C:\us

  • 我将dll路径存储在设置文件中。当我输出 如果我在project中添加(dll)作为外部类文件夹,并编写:,它可以在这台机器中工作,但是当我使用可运行的jar时,它找不到,所以我想给出dll的绝对路径。但对我没用。 我也试过: C:\users\argenit\desktop\aaa\dll\ergopointer_64_bit dll\ergopointer_64_bit.dll ergopoi

  • 在Eclipse中运行应用程序时,出现以下异常: java.lang.无法加载库'kernel32':本地库(linux-x86-64/libkernel32.so)在资源路径中找不到(/opt/eclipse/plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar) 我该如何解决这个问题?