Welcome!

Welcome to the official BlackBerry Support Community Forums.

This is your resource to discuss support topics with your peers, and learn from each other.

inside custom component

Java Development

Reply
Highlighted
Developer
Posts: 72
Registered: ‎06-29-2009
My Device: Not Specified
Accepted Solution

What changed? JDE 4.5 versus JDE 4.6

Hi there,

 

Currently developing an app for the 8310 an using the 4.5 JDE. Until this Friday everything was going great and then..... Started to receive this COD verification error. In my initial post, someone mentioned that these can usually be attributed to trying to access something from the API that is not available on the device. 

 

http://supportforums.blackberry.com/rim/board/message?board.id=java_dev&thread.id=61077 

 

My question though is, how dos one go about fining out what it is that you are using that is not compatible with the target device and hance JE version?

 

Thanks,

Schalk 

Developer
Posts: 19,636
Registered: ‎07-14-2008
My Device: Not Specified

Re: What changed? JDE 4.5 versus JDE 4.6

See this KB article:

 

What Is - Appropriate version of the BlackBerry JDE
Article Number: DB-00537
 
http://www.blackberry.com/knowledgecenterpublic/livelink.exe/fetch/2000/348583/800738/800901/What_Is...

 

So you should develop using a level that matches or precedes the earliest OS you wish to support.  While in some cases it is possible to use a later level and not use any of the features that are introduced at that level on earlier devices, this is not supported.

 

Regarding the differences release to release, you will find the Release guide explinas these.  For example, here is the 4.6 Release Guide.

 

http://docs.blackberry.com/en/developers/deliverables/3842/jde_4_6_0_known_issues%20-%20RTM.pdf

Developer
Posts: 1,474
Registered: ‎04-14-2009
My Device: Not Specified

Re: What changed? JDE 4.5 versus JDE 4.6

[ Edited ]

How does one go about finding out what it is that you are using that is not compatible with the target device and hance JDE version? Usually there are two obvious steps:

 

1. Compile with the JDE version corresponding to the lowest handheld software version you're targetting. The first three numbers in the handheld software version and JDE version are the important ones. For example, JDE 4.5.0 is fine for any devices with v4.5.0.x handheld software; JDE 4.6.1 is not necessarily OK for v4.6.0 devices, whereas JDE 4.6.0 is.

 

2. If you want to be really really certain, install your module(s) on devices covering major handheld software versions (again, first three numbers of the version are the important ones). For example, v4.0, v4.0.2, v4.1.0, v4.2.0, 4.2.1, v4.2.2, v4.3, v4.5.0, v4.6.0, v4.6.1, v4.7.0, v4.7.1, v5.0.0.Verification errors happen and install/system startup time and these are link-time errors, so you don't need to actually test the various features of your app -- it either fails the verification or does not. If a module fails the verification, it cannot be used, and the applications contained in the module cannot be started.

 

 

P.S. In principle you shouldn't even be allowing the user/BES admin to install a COD file compiled by a higher version (first three numbers only) of JDE, as otherwise, in the worst case scenario, the device may get semi-bricked due to the verifier crashing or entering an infinite loop (lots of trickery will be required to make it usable again). Last time I've seen this it was on a v4.1 handheld software, so, may be, this has been fixed. The typical case nowadays is that your module gets a verification error and cannot be used

 

Note that there are certain corner cases where, even if you're using an API that is available in lower JDE version, your module will still get verification errors on handheld software corresponding to that lower JDE version. For example, if you're using SocketConnectionEnhanced and build your module using JDE 4.6+, you'll still get a verification error on handheld software v4.5. If you build the same source code with JDE 4.5 (provided you don't use any 4.6-specific APIs), your module will load fine on both v4.5 and v4.6+ handheld software.
Message Edited by klyubin on 21-09-2009 02:21 PM
Developer
Posts: 72
Registered: ‎06-29-2009
My Device: Not Specified

Re: What changed? JDE 4.5 versus JDE 4.6

Hi there,

 

Thank you for your insightful answer. In the end we found that it was not a question of using an API call or class that was the problem but, using the .forName() on a class that was not supported on the 8310/JDE 4.5

 

Kind Regards,

Schalk 

Developer
Posts: 1,474
Registered: ‎04-14-2009
My Device: Not Specified

Re: What changed? JDE 4.5 versus JDE 4.6

I find it really hard to believe that Class.forName() was the root cause of the verification error. Class.forName() is a runtime operation and the link-time verifier can't know (because of the undecidability of the Halting Problem) what classes your module will be requesting via Class.forName(). I suspect your link-time verification error may have been caused by a dependency on a class having been compiled into your module by the Java compiler and/or rapc and the verifier finding out that it could not satisfy the dependency.

 

If you used Class.forName(), may be you used it like this: (MissingClass) Class.forName(...).newInstance(), which would have given your module a compile/link-time dependency on the class MissingClass.

Developer
Posts: 72
Registered: ‎06-29-2009
My Device: Not Specified

Re: What changed? JDE 4.5 versus JDE 4.6

I actually made a mistake on my previous post, it was the following that was causing the problem:

MyClass.class.getName()

 

Regards,

Schalk 

Contributor
Posts: 17
Registered: ‎04-17-2010
My Device: Curve 8350i
My Carrier: Nextel

Re: What changed? JDE 4.5 versus JDE 4.6

Hello, I am trying to find the 4.6 runtime for my eclipse plugin but the only one available is the 5.0.0

 

My device is an 8350i and runs on a 4.6 platform

 

I've tested on the simulator and it seems fine, but wanted to ensure here with you guys.

 

Thanks for any kind of assistance.

 

Cheers,

 

Ernani