While the J2MESafe runs well on many phones and simulators, SE W810i does not run it correctly. It is unable to initialize the passcode, hence it is unusable then. The solution for it is as follows.
I've found the problem is with interaction between 'PasswordMgr' and BouncyCastle digest algorithms. It looks like some insufficiency of the SE JVM. Fortunately, it is not hard to alter it to make it work.
Put the BouncyCastle 'GeneralDigest' and 'SHA1Digest' classes into one new class, name it e.g. 'TheDigest' and use it from the 'PasswordMgr'. Together with it, you have to rename one of the 'update' methods there.
One such possible class is posted in the attachment herein. You can put it into the net/sourceforge/j2mesafe directory and change the 'PasswordMgr' to use it instead of the original 'SHA1Digest' class.
The 'PasswordMgr' hack is just for one place at the code, in the 'createDigest' function:
// Digest algo = new SHA1Digest();
TheDigest algo = new TheDigest();
You can comment out importing the BouncyCastle classes into the file too.
As a result, the J2MESafe works for me well now.
Martin
exemplar concatenated SHA1 digest class