Как избежать нежелательных сообщений журнала в проекте Java?

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

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

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

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

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
1 234
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

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

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

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

В дополнение к вашему сообщению, если он теперь получил MyClass.AddLog () в 5000 строках, возможно, ему следует просто обернуть вызов ResourceBundle в метод «AddLog» внутри класса сообщений.

Filip Ekberg 07.01.2009 15:42

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

duffymo 07.01.2009 15:47

Ваш класс Messages - похоже, он расширяет org.eclipse.osgi.util.NLS.

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

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

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

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

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

Спасибо, джамеш, я не знал о NLS. Ваш ответ был лучше моего. Я должен это изучить.

duffymo 07.01.2009 20:19

Этот комментарий сделал мою ночь. Спасибо.

jamesh 08.01.2009 01:51

Duffymo, как сказал джамеш, Messages - это класс, который я написал, и он расширяет org.eclipse.osgi.util.NLS. Он имеет частный статический атрибут и его тип ... ResourceBundle!

джамеш, спасибо за подробное описание работы NLS.

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

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

Спасибо вам, ребята. Ты жжешь.

Другие вопросы по теме