Java断言被Weblogic和Struts 2弄乱了

Java断言被Weblogic和Struts 2弄乱了,java,weblogic,assert,Java,Weblogic,Assert,我开始在我的JavaEE5应用程序中使用断言,当断言起作用时,堆栈跟踪和消息不起作用。这是我的密码: assert 4 == outputList.size() : "outputList is not size 4: " + outputList.size(); 当我将列表设置为3时,它会抛出以下内容: <Error> <HTTP> <BEA-101020> <[weblogic.servlet.internal.WebAppServletCon

我开始在我的JavaEE5应用程序中使用断言,当断言起作用时,堆栈跟踪和消息不起作用。这是我的密码:

  assert 4 == outputList.size() : "outputList is not size 4: " + outputList.size();
当我将列表设置为3时,它会抛出以下内容:

<Error> <HTTP> <BEA-101020> <[weblogic.servlet.internal.WebAppServletContext@6ea53502 - appName: 'MyPortal', name: 'myportal', context-path: '/myportal'] Servlet failed with Exception
java.lang.NullPointerException
at weblogic.servlet.internal.ServletResponseImpl.sendError(ServletResponseImpl.java:610)
at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:770)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:505)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3242)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2010)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1916)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1366)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
>

它不执行干净的堆栈跟踪,也没有断言消息


有什么想法吗?

引发异常的不是断言。 您可以使用
assert
关键字,但JVM通常会忽略它,如果您想让JVM不忽略它,则必须使用
java-enableassertions
java-ea


因此,您必须将此java参数添加到java选项。

如果将第一部分更改为
assert outputList.size().equals(4)
,会发生什么情况?您确定导致应用程序停止运行的异常是由断言引起的吗?它说的是NullPointerException,所以如果您认为它发生在那里,请检查列表是否为null。Zach,size()返回和int,不能取消引用。Jochen,不,我不确定是否抛出了断言。但是,当我将列表的大小与3(它是)进行比较时,也不例外。stacktrace更重要的是,我相信它的根不是
assert
代码的生命。是吗?我正在使用-enableassertions。