LogManager忽略已启用的断言

时间:2016-06-19 12:49:48

标签: java java.util.logging

在调试器中逐步执行java.util.logging.LogManager代码时,我发现了这一点 由于第1301行的例外

try (final InputStream in = new FileInputStream(fname)) {

第407行抓住

assert false : "Exception raised while reading logging configuration: " + ex;

应该但不要抛出AssertionError

VM选项:-ea -Djava.util.logging.config.file=logging.properties

1 个答案:

答案 0 :(得分:0)

您必须使用-esa enable assertions in all system classes。根据{{​​1}}的文档:

  

-enableassertions(-ea)选项适用于所有类加载器和系统类(没有类加载器)。 此规则有一个例外:如果该选项不带参数,则它不适用于系统类。这使得在除系统类之外的所有类中启用断言变得容易。 -enablesystemassertions选项提供了一个单独的开关,用于在所有系统类中启用断言。

以下是一个测试用例,用于验证您应该使用-ea[:[packagename]...|:classname]运行的行为:

-esa

另一种选择是通过将命令行设置为:public static void main(String[] args) { System.out.println(LogManager.class.desiredAssertionStatus()); }

来启用用户代码和LogManager的断言