views:

21

answers:

1

I had a MIDlet project called Numbers that I decided to rename to Digits. Instead of simply renaming it, I decided to create a brand new project from scratch, so that I can have new directory, package name, .jad/.jar names, etc. Everything went fine, I copied the .java files to /src and resource files to /res and recompiled successfully. I used Eclipse Helios and Nokia's Series 40 5th Edition SDK, Feature Pack 1, for both projects.

Now, for some weird reason when the MIDlet starts in the emulator, it throws a NullPointerException, but not immediately on startup, but after a splash screen (it's a game). I haven't touched the code at all, so I rule out the possibility of an exception in the code, since it worked just fine when the project was called Numbers. After an hour of trial and error, I found a weird thing: if I open up the Application Descriptor and change the MIDlet name property from "Digits" to "Numbers" (old project name), everything runs perfectly and no exception is thrown.

I did a text search in all project files and the word "Numbers" only appears in the Application Descriptor and the .jad file, and only after I change the MIDlet name property, otherwise that string is nowhere to be found (no class names, no variables, no other properties, neither in the code nor in the project have a string "Numbers"). Where is that reference coming from? A bug in Eclipse or Series 40 emulator? What gives?

A: 

Found, after another half an hour of investigation. There's a folder in the Series 40 SDK directory that apparently caches the MIDlets it runs, and keeps older versions of the same MIDlet there too. I cleaned the entire directory and now the project starts just fine with new values in MIDlet Name and MIDlet Vendor. The directory to clean is:
Nokia\Devices\S40_5th_Edition_SDK_Feature_Pack_1\bin\Storage\6500500\C\DirectLoaded\

Levon