You created the worlds best plugin and deployed it to all of your Lotus Notes users so this flashy new view shows in the sidebar. You rely on some Notes API’s and everything works great on your machine. You then create your widget’s extension.xml and post it to the widget catalog. You send out the email the new widget is available.
You wait…you wait…you wait…
You get some good feedback that your new sidebar application works great.
Then, you get a couple of emails saying “your sidebar application isn’t showing up”. You start asking for errors, logs, console errors, etc. Nothing seems to show any glaring problems. Then you start asking, well what version of Lotus Notes are you running? You get answers like Notes 8.1.2, Notes 8.5, Notes 8.5.1, etc. Isn’t that the beauty of Notes! You then realize you yourself are running Notes 8.5.2 and that is what you actually wrote the plugin against – in the Eclipse IDE. You open up the Manifest.MF to see if there would be any problems. This is what you see:
Require-Bundle: org.eclipse.core.runtime, org.eclipse.ui,org.eclipse.ui.views, org.eclipse.core.runtime, com.ibm.notes.java.api, com.ibm.notes.java.ui, com.ibm.notes.client;bundle-version="8.5.2"
Do you see the problem? The problem is the plugin “com.ibm.notes.client” requires specifically version “8.5.2“. These means if the plugin does not have the required bundles (and any versions specified) it will not activate in the Eclipse platform. Now, let’s say this was intentional because you used some new API that was introduced in Notes 8.5.2 – then this is good! There were no visible “crashes” or problems, the plugin just didn’t start – which is the beauty of OSGI. If you are not intending this, then you simply need to remove the version restriction:
Require-Bundle: org.eclipse.core.runtime, org.eclipse.ui,org.eclipse.ui.views, org.eclipse.core.runtime, com.ibm.notes.java.api, com.ibm.notes.java.ui, com.ibm.notes.client
This is actually a huge benefit of OSGI but mixing the plugin installation with widgets can cause some confusing results because there are no errors reported when the widget is installed. The user thinks everything went “well”. So in the end, be careful of the the Eclipse IDE, it inserts these version numbers in your manifest automatically.