Как избежать нежелательных сообщений журнала в проекте Java? - PullRequest
0 голосов
/ 07 января 2009

В моем Java-проекте у меня есть куча строк, выведенных в файл messages.properties. В соответствующем файле Messages.java у меня было такое же количество открытых статических атрибутов типа String, чтобы я мог получить доступ к этим внешним текстам.

Затем я реализовал метод с именем getString, который получает имя константы в качестве аргумента и возвращает нужный текст. Таким образом, нет необходимости объявлять все открытые статические атрибуты типа Strings внутри файла Messages.java.

Но после этого мой журнал заполнился сообщениями " NLS неиспользованные * ".

Знаете ли вы, есть ли способ предотвратить регистрацию этих предупреждающих сообщений?

Заранее спасибо.

Ответы [ 3 ]

5 голосов
/ 07 января 2009

Ваш Messages класс - звучит так, будто он расширяется org.eclipse.osgi.util.NLS.

Если это так, он предназначен для удовлетворения требований:

  • для проверки времени компиляции на наличие сообщения.
  • , чтобы избежать использования памяти картой, содержащей и ключи, и значения (это было бы в случае подхода с использованием пакета ресурсов).
  • хорошая поддержка i18n.

т.е. NLS заполняет значение Message.staticVariable значением staticVariable, найденным в messages.properties.

В журнале предупреждений содержится информация о несоответствии между Messages.java и messages.properties файлом.

Ваш метод getString() звучит так, как будто он не использует ни одного из преимуществ NLS, поэтому, как другие предложили, вам лучше использовать ResourceBundle.

3 голосов
/ 07 января 2009

Сообщения звучат как класс, который вы написали, потому что я не вижу его в своем JDK 6 javadocs.

Похоже, вы пытались заново изобрести java.util.ResourceBundle. Я бы рекомендовал использовать это вместо того, чтобы бросить свой класс. Это даст дополнительное преимущество правильной обработки I18N.

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

0 голосов
/ 07 января 2009

duffymo , как сказал jamesh , Messages - это класс, который я написал, и он расширяет org.eclipse.osgi.util.NLS. У него есть закрытый статический атрибут, а его тип ... ResourceBundle!

jamesh , спасибо за детализацию работы NLS.

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

Количество файлов в нашем проекте было уменьшено, код был сохранен таким же чистым, как и раньше, и больше нет предупреждений журнала.

Спасибо, ребята. Вы качаетесь.

...