尽管-ea标志不在我的java命令行中,为什么启用断言

尽管-ea标志不在我的java命令行中,为什么启用断言,java,Java,我的javaapp命令行上没有-ea标志,但是在使用visualvm进行远程调试/评测时,我确实看到调试器/评测器正在通过这一行,这是为什么?我没有在java命令行参数上放置任何-ea。多亏了@Smutje,我重新验证了这一点,看起来它确实没有进入实际的断言块,可能遗漏了一些内容。断言是否产生了错误,或者只是“被忽略了”?@Smutje我在assert应该调用的方法中放置了一个断点,比如assert foo(),所以我在foo()中放置了一个断点(远程调试到服务器),我看到我从assert堆栈中

我的
java
app命令行上没有
-ea
标志,但是在使用
visualvm
进行远程调试/评测时,我确实看到
调试器
/
评测器
正在通过这一行,这是为什么?我没有在java命令行参数上放置任何
-ea

多亏了@Smutje,我重新验证了这一点,看起来它确实没有进入实际的断言块,可能遗漏了一些内容。

断言是否产生了错误,或者只是“被忽略了”?@Smutje我在assert应该调用的方法中放置了一个断点,比如
assert foo()
,所以我在
foo()
中放置了一个断点(远程调试到服务器),我看到我从assert堆栈中找到了该方法。您使用的是哪个JDK版本?对于JDK 8u11,我从字节码中看到,
assert
在调用传递给
assert
语句的任何内容之前检查一个静态字段
$assertionsDisabled
(如果此字段为
true,则跳过整个语句),所以,当断言被禁用时,您所描述的事情实际上不应该发生——可能visualvm会自动启用断言?