Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @有效的批注在简单项目中无效_Java_Maven_Validation_Console - Fatal编程技术网

Java @有效的批注在简单项目中无效

Java @有效的批注在简单项目中无效,java,maven,validation,console,Java,Maven,Validation,Console,下面是我的简单Java演示代码: package com.demo; import javax.validation.Valid; import javax.validation.constraints.NotNull; public class App { public static void main(String[] args) { @Valid @NotNull Object x = null; System.out.println("S

下面是我的简单Java演示代码:

package com.demo;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;

public class App {
    public static void main(String[] args) {
       @Valid @NotNull Object x = null;
       System.out.println("Shouldn't print this!");
    }
}
这是我的Maven配置:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>untitled1</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>2.0.1.Final</version>
    </dependency>
    </dependencies>
</project>
预期的行为是引发带有验证错误的异常


为什么这个简单的代码不能像预期的那样工作?

作为依赖项,您可以使用一个实现,比如
hibernate validator
,它可以传递地提取验证api

在JavaSE环境中,还需要EL实现

<dependency>
   <groupId>org.glassfish</groupId>
   <artifactId>javax.el</artifactId>
   <version></version>
</dependency>

更多信息:

注释本身不起任何作用。每个注释都需要某种类型的处理器来处理注释(您可以将注释视为提示)。在这里,您需要一个验证处理器使其工作。看看
<dependency>
   <groupId>org.glassfish</groupId>
   <artifactId>javax.el</artifactId>
   <version></version>
</dependency>
public class ValidationExample {
    
        @NotNull
        private Object name;
    
        public static void main(String[] args) {
            ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
            Validator validator = factory.getValidator();
            Set<ConstraintViolation<ValidationExample>> violations = validator.validate(new ValidationExample());
    
            for (ConstraintViolation<ValidationExample> violation : violations) {
                System.out.println(violation.getMessage());
            }
        }
    }
INFO: HV000001: Hibernate Validator 6.1.6.Final
must not be null