2012-03-16 4 views
3

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) 
> 

それはきれいなスタックトレースを行わないとアサートメッセージを持っていません。

アイデア?

+0

最初の部分を 'assert outputList.size()。equals(4)'に変更するとどうなりますか? –

+0

あなたのアプリケーションを殺す例外がアサーションによって引き起こされたことは確かですか?それはNullPointerExceptionと言われています。そこで起こると思うなら、そのリストがnullかどうか確認してください。 – Jochen

+0

Zach、size()は逆参照できないintを返します。 – Scott

答えて

1

例外をスローするアサートではありません。 assertキーワードを使用できますが、JVMは通常無視します.JVMを無視しない場合は、java -enableassertionsまたはjava -eaを使用する必要があります。

したがって、このJavaパラメータをJAVA_OPTSに追加する必要があります。

+0

私は-enableassertionsを使用しています。 – Scott

関連する問題