当前位置: 首页 > 知识库问答 >
问题:

带Spring boot和Jetty的ValidationException

徐俊楚
2023-03-14

我设置了一个Spring Boot应用程序(1.4.0.release),配置如下

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

不出所料,它使用嵌入式Tomcat运行。然后,我考虑使用Jetty服务器进行同样的尝试,并按照本文文档中提到的步骤进行:使用Jetty而不是Tomcat

原因:javax.validation.validationException:HV000183:无法加载“javax.el.ExpressionFactory”。检查是否有类路径上的EL依赖项,或者改用ParameterMessageInterpolator

我可以通过在pom.xml中添加以下依赖项来解决这个问题:

<dependency>
        <groupId>javax.el</groupId>
        <artifactId>javax.el-api</artifactId>
        <version>3.0.0</version>
</dependency>

我没有直接使用任何与验证相关的代码,但我怀疑这是从spring boot jpa starter中提取的,它在Hibernate中提取。我在这里也看到了围绕这个的讨论:类似的问题

共有1个答案

云煌
2023-03-14

您使用javax.el依赖项是正确的。当JPA像您所说的那样拉入Hibernate时,它将使用Hibernate验证器。这里指定了。这是正确的解决办法。至于文档,我个人会提出,但我怀疑不是每个人都会有同样的问题。我仍然可以运行我的MVN clean install而没有错误,但是如果运行MVN spring-boot:run,它会立即启动并关闭。

 类似资料: