尽管-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会自动启用断言?