JavaME NullPointerException при изменении имени мидлета или свойства поставщика (эмулятор Eclipse + Series 40)
У меня был проект MIDlet под названием Numbers, который я решил переименовать в Digits. Вместо того, чтобы просто переименовать его, я решил создать новый проект с нуля, чтобы у меня был новый каталог, имя пакета, имена.jad/.jar и т. Д. Все прошло хорошо, я скопировал файлы.java в /src и файлы ресурсов в /res и успешно перекомпилированы. Я использовал Eclipse Helios и Nokia Series 5 5th Edition SDK, Feature Pack 1, для обоих проектов.
Теперь, по какой-то странной причине, когда мидлет запускается в эмуляторе, он генерирует исключение NullPointerException, но не сразу при запуске, а после заставки (это игра). Я вообще не касался кода, поэтому исключаю возможность исключения в коде, поскольку оно работало очень хорошо, когда проект назывался Numbers. После часа проб и ошибок я обнаружил странную вещь: если я открываю дескриптор приложения и изменяю свойство имени мидлета с "Цифры" на "Числа" (старое имя проекта), все работает отлично, и исключение не выдается.
Я выполнил текстовый поиск во всех файлах проекта, и слово "Numbers" появляется только в дескрипторе приложения и в файле.jad, и только после того, как я изменил свойство имени мидлета, иначе эту строку нигде не найти (без имен классов, без переменных, без других свойств, ни в коде, ни в проекте нет строки "Числа"). Откуда эта ссылка? Ошибка в эмуляторе Eclipse или Series 40? Что дает?
1 ответ
Нашел после еще полчаса расследования. В каталоге Series 40 SDK есть папка, которая, по-видимому, кэширует те MID-леты, которые она запускает, и хранит там старые версии того же самого MID-лета. Я очистил весь каталог, и теперь проект прекрасно запускается с новыми значениями в MIDlet Name и MIDlet Vendor. Каталог для очистки:
Nokia \ Devices \ S40_5th_Edition_SDK_Feature_Pack_1 \ Bin\Storage\6500500\C\DirectLoaded\