2010-02-27 7 views
3

При использовании GWT я получаю следующее предупреждение:GWT: REFERENCING осуждается класса SerializableException

Referencing deprecated class 'com.google.gwt.user.client.rpc.SerializableException' 

Хотя это всего лишь предупреждение, он мертв раздражает того, чтобы смотреть на каждый раз, когда я запускаю проект.

Предупреждение происходит, так как мой RPC бросает java.lang.Exception и, таким образом, никогда не использует исключение SerializableException, но GWT недостаточно умен, чтобы понять это.

Есть ли возможность отключить предупреждение или исправить это, помимо компиляции моей собственной версии библиотек gwt-user/gwt-servlet?

Спасибо.

Редактировать: Чтобы уточнить, это GWT 2.0, а проект запускается из плагина Google в Eclipse.

ответ

2

Кто-то на Google в GWT в Группа suggested с использованием SerializationException вместо просто исключения. Хотя, javadocs для SerializableException предполагают, что Exception тоже должно быть хорошо:/Какую версию GWT вы используете?

Устаревший. По состоянию на GWT 1.5, Exception реализует Serializable и можно использовать вместо этого [SerializableException] класса

+0

GWT 2.0, с Java 1.5, поэтому есть мало смысла в использовании SerializationException именно из-за этого. И не было бы смысла использовать устаревший класс, когда это именно то, о чем идет предупреждение! –

+2

'SerializationException' не устарело (не путайте его с помощью' SerializableException'). И, используя это явно, вы скажете компилятору GWT, какие классы он должен ожидать - вместо того, чтобы втягивать все, что связано с расширением «Исключение». –

0

Вы можете установить лог-уровень компилятора gwt. Похоже, вы настроили свой «предупреждать», задали ему информацию, чтобы избавиться от сообщения. Если вы используете затмение сделать следующие шаги:

  1. правой кнопкой мыши на проекте
  2. Google >> GWT Скомпилируйте
  3. Установите Уровень журнала для информации
+0

Я не компилирую GWT, если могу это избежать, но использует горячую замену кода с плагином Eclipse GWT на Jetty. Поэтому мне нужно установить параметры ведения журнала в другом месте. –

1

Lombardi's blog has a discussion почему именно это происходит в источнике.

Да, это глупо Google требовать бросать Exception это хорошая вещь, чтобы сделать, когда он генерирует много ненужных JavaScript для подклассов Exception и в вашем случае, генерирует предупреждения об этих подклассах.

Но это тем более основополагает для исключения более конкретного исключения (которое не имеет устаревшего потомка). Непроверенные исключения на вашем RPC все еще могут обрабатываться UncaughtExceptionHandler.

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