2011-08-22 89 views
0

我正在使用GWT-RPC來調用ANTLR語法。 如果語法失敗,我創建一個包含語法拋出的錯誤/異常的對象,並將其返回給客戶端。序列化GWT RPC的ANTLR異常

當我做到這一點我得到異常:

com.google.gwt.user.client.rpc.SerializationException: Type 'org.antlr.runtime.NoViableAltException' was not included in the set of types which can be serialized by this SerializationPolicy or its Class object could not be loaded. 

我發現有一個與另外一個公共的無參數的構造函數(需要GWT-RPC序列化)的相同類的COM .google.appengine.repackaged.org.antlr.runtime包。

如何轉換org.antlr.runtime.NoViableAltExceptioncom.google.appengine.repackaged.org.antlr.runtime.NoViableAltException

回答

0

作爲創建可以序列化的新例外的替代方法,我使得我的分析器覆蓋了BaseRecognizer中的emitErrorMessage方法。

@members { 
    @Override 
    public void emitErrorMessage(String msg) { 
     // The original prints to stdout. 
     // You can do what you like with the message. 
    } 
} 

至於帕帕佐在他回答的建議,我並沒有實際需要的例外,只是從它的消息。

1

你是否需要自己的例外?我想不是 - 你可能需要這個消息,或者最多是堆棧跟蹤。既然你重新打包異常,只需重新包裝所需的字符串並通過網絡發送。