Java EE 5アプリケーションでアサーションを使用し始めましたが、アサーションが動作している間は、スタックトレースとメッセージはありません。ここに私のコードは次のとおりです。私は、リストのサイズ3を作るときWeblogicとStruts 2でJavaアサーションが乱雑になった
assert 4 == outputList.size() : "outputList is not size 4: " + outputList.size();
それは、これをスロー:
<Error> <HTTP> <BEA-101020> <[[email protected] - 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 outputList.size()。equals(4)'に変更するとどうなりますか? –
あなたのアプリケーションを殺す例外がアサーションによって引き起こされたことは確かですか?それはNullPointerExceptionと言われています。そこで起こると思うなら、そのリストがnullかどうか確認してください。 – Jochen
Zach、size()は逆参照できないintを返します。 – Scott