netbeans & java, resourceMap.getString возвращает ноль - PullRequest
2 голосов
/ 11 января 2010

Версия продукта: IDE NetBeans 6.8 (сборка 200912041610) Java: 1.6.0_17; Java HotSpot (TM) Клиент VM 14.3-b01 Система: Windows 7 версии 6.1, работающая на x86; CP1252; en_GB (nb)

Здравствуйте, новичок здесь, Java-программист, и интересно, если кто-то может помочь, у меня возникли некоторые проблемы при обновлении графического интерфейса для настольного приложения в NetBeans, вот подробности:


Мой текущий графический интерфейс приложения работает отлично, все выглядит правильно.

когда я обновляю графический интерфейс, добавляя новую метку из набора инструментов netbeans на мою форму и использую функцию предварительного просмотра netbeans, все выглядит отлично

Однако, когда я запускаю приложение, новый ярлык исчезает.

, чтобы попытаться понять проблему, я запустил приложение в режиме отладки и прошел автоматически сгенерированный код initComponents ()

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

TEST_lbl.setText(resourceMap.getString("TEST_lbl.text")); // NOI18N

после выполнения этой строки кода TEST_lbl.setText равно нулю.

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

я открыл файл карты ресурсов в блокноте (файл .properties), и он содержит запись "TEST_lbl.text = jLabel1" среди записей для всех остальных рабочих элементов управления ...

поэтому файл свойств имеет правильное значение, но resourceMap.getString не получает его

Я могу обойти эту проблему, изменив параметр «Автоматическое управление ресурсами» формы с «Все ресурсы» на «Выкл.»

в результате это автоматически изменяет строку кода "setText" на:

TEST_lbl.setText("jLabel1"); 

и корректно отображает метку при запуске приложения


мой первый вопрос будет, это известная ошибка? или я сделал что-то глупое и случайно изменил настройку какой-то программы?

если это не ошибка, как я могу исправить проблему, не меняя настройки управления ресурсами?

Если это ошибка, каковы последствия отключения автоматического управления ресурсами?

Спасибо за помощь, - Gaz

1 Ответ

1 голос
/ 12 января 2010

Я предполагаю, что вы запускаете его под NB (Run> Run Main Project)?

Попробуйте чистую сборку (Run> Clean and Build Main Project). Это обычно исправит это.

Вопрос в том, как структурирована система сборки.

Когда вы запускаете проект в чистом хранилище (Run> Run Main Project):

  1. .class файлы записываются в $ project / build / classes
  2. неклассные файлы копируются в дерево
  3. все это оттуда бежит.

Это прекрасно работает.

Если вы «строите» проект («Выполнить»> «Создать основной проект»): 1. файлы .class записываются в $ project / build / classes 2. не классовые файлы копируются в дерево 3. все это свернуто в файл jar.

Это тоже отлично работает.

Однако, если вы впоследствии внесете изменения и запустите проект, файлы классов и ресурсы теперь отображаются в 2 местах:

  • в сборке / классах
  • в проекте dist / .jar

Это нормально работает при поиске файлов классов. Ресурсы, однако, находятся в банке в первую очередь. Поэтому во время выполнения ваш код находит устаревшую копию файла свойств в jar, а не новую в файловой системе.

Также: NB игнорирует регистр при поиске ресурса, но JVM от Sun этого не делает (не уверен насчет IcedTea). Таким образом, если используется неправильный регистр, NB может настаивать на том, что файл существует, но JVM не сможет его найти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...