使用GWT时,我收到以下警告:
Referencing deprecated class 'com.google.gwt.user.client.rpc.SerializableException'
虽然这只是一个警告,但是每次运行项目时都不得不查看。
警告发生,因为我的RPC抛出了java.lang.Exception,因此从未实际使用过SerializableException,但GWT并不够聪明,无法解决这个问题。
除了编译我自己版本的gwt-user / gwt-servlet库之外,是否可以选择关闭警告或解决此问题?
感谢。
编辑:为了澄清,这是GWT 2.0,该项目是从Eclipse中的Google插件运行的。
答案 0 :(得分:2)
GWT的Google群组suggested上有人使用SerializationException
而非Exception。虽然SerializableException
的javadoc表明Exception
也应该没问题:/你使用的是哪个版本的GWT?
已过时。截至GWT 1.5,异常 实现Serializable,可以 用来代替[SerializableException]类
答案 1 :(得分:1)
Lombardi's blog has a discussion为什么完全这是在源中发生的。
是的,谷歌宣称投掷Exception
是一件很好的事情,当它为Exception
的子类生成大量不必要的JavaScript时,这是件好事,在你的情况下会生成关于这些子类的警告
但这就是抛出一个更具体的异常(一个没有弃用的后代)的更多理由。您的RPC上未经检查的例外仍可由UncaughtExceptionHandler
处理。
答案 2 :(得分:0)
您可以设置gwt编译器的loglevel。看起来你已经将你的设置为“警告”,将其设置为信息以消除该消息。 如果您正在使用eclipse,请执行以下步骤:
答案 3 :(得分:0)
虽然扩展SerializationException
是一种解决方法,但SerializationException
的约定表明它不应该用作自定义RPC异常的父类。它表示序列化本身存在问题,而不是服务中的逻辑。
底层问题是编译器生成不必要的代码。要避免错误,只需确保代码不再使用SerializableException
并将以下行添加到模块描述符中。
<extend-configuration-property name="rpc.blacklist" value="com.google.gwt.user.client.rpc.SerializableException"/>
修复编译问题后,您可以再次删除该行。以下是您可能希望明星/关注的问题的链接: http://code.google.com/p/google-web-toolkit/issues/detail?id=4438