如果我激活一类richtercloud.java.assertion.ignored.NewMain
的main
方法继Oracle documentation为什么当assertion以编程方式激活时,“assert false”不会导致AssertionError?
ClassLoader.getSystemClassLoader().setDefaultAssertionStatus(true);
ClassLoader.getSystemClassLoader().setPackageAssertionStatus("richtercloud.java.assertion.ignored", true);
System.out.println(String.format("desired assertion status: %b",
NewMain.class.desiredAssertionStatus()));
assert false;
System.out.println("assertion has been ignored");
断言,我从印结看到assert false
不会引起AssertionError
像它造成的,如果我包在一个JAR NewMain
和用java -ea -jar java-assertion-ignored-1.0-SNAPSHOT-jar-with-dependencies.jar richtercloud.java.assertion.ignored.NewMain
运行它。
有关程序化启用断言的其他问题only suggest to not use assertions这显然不是解决方案。
MCVE https://github.com/krichter722/java-assertion-ignored。