Towards The OTDT 1.2.0
While building pre-releases of the OTDT 1.2.0 a number of issues occurred with the platform and its provisioning system p2, which are documented on this page. The information below has been updated for the final OTDT 1.2.0 based on the final Eclipse 3.4.0, where most issues should no longer affect normal installation and operation of the OTDT. Only reverting the configuration currently seems to be impossible due to problems with the infrastructure.
By far the greatest effort in migrating to Eclipse 3.4 (Ganymede) was the adoption of a new infrastructure: the provisioning system p2, which still has plenty of quirks of all kinds.
On the positive side, installation of the OTDT will be much more canonical for 1.2.x than for previous versions (see also http://www.objectteams.org/distrib/otdt_1.2.html):
- Simply install any package of Eclipse Ganymede (3.4).
- Launch Eclipse (preferably using an empty (throw-away) workspace).
- Go to Help -> Software Updates ... -> Available Software and add a new site using this URL: http://www.objectteams.org/distrib/otdt-updates-1.2
- From this site select "Object Teams Development Tooling" (no need to select the other two features, they're included automatically -- but see below for another recommended feature).
- Install and restart
- You may optionally use these checks to see if all went OK:
- Restart should show an updated splash screen including the OTDT Logo.
- After restart, the welcome screen should show with a highlight on the OTDT stuff.
- 'Help -> About Eclipse SDK` should show two OT-Features: the OTDT and OT/Equinox.
- Looking at Plug-in Details some plugins should show a version number containing "**** OT-Adapted by * some ot-plugin"
- The Object Teams perspective is availabe.
- If you're convinced that all is there, you may switch to your existing workspace containing Object Teams projects.
That's the theory and given that you don't need to check all items mentioned above, this looks fairly easy, right? In fact, using the new update mechanism, you will have more options of using the OTDT together with all the other plug-ins of your choice.
In real life I experienced a number of issues which are reflected by open bugs in the Eclipse bugzilla. So, here I collect some known problems and workarounds:
- Infinite Splash Loop
- Unsatisfiable Feature Dependencies
- Unability to Revert Previous Configuration
- Exporting a Feature using the Export Wizard
- Updating fails to find a valid solution
- Installation on IBM Rational products
Infinite Splash Loop
Restarting after installing some features / plugins may cause the splash screen to periodically come and go. The launch will neither succeed nor terminate (it may not even be easy to kill the flashing window). This bug is documented in Eclipse bug 235006. As of Eclipse 3.4.2 this bugs is mostly fixed. For those cases where the infinite splash loop still strikes, starting Eclipse with the option -clean usually fixes the problem.
Unsatisfiable Feature Dependencies
After any patch feature has been installed, any subsequent install causes p2 to complain about unsatisfiable dependencies (see Eclipse bug 235000). In this situation reverting a previous configuration is not possible at all.
One reason was that non-final versions of the SDK were not properly equipped with (a link to) meta data.
Note also, that this implies that the same problem exists if you don't have a network connection while (un)installing features.
Similar warnings have also been observed in a final Eclipse 3.4, but those warnings could safely be ignored. Reverting, however, is still not possible -> see the next section.
Unability to Revert Previous Configuration
This is basically the same issue as above regarding unsatisfiable dependencies. Additionally, Eclipse bug 235006#c21 hits here, leaving us essentially with the conclusion that so-called framework extensions currently can't be reverted. The OTDT is built using OT/Equinox and one part of OT/Equinox is implemented as a framework extension => thus no reverting for the OTDT. End of story (for Eclipse 3.4.0).
Update (10.03.2009): If the patch from Eclipse bug 241477 will make it into Eclipse 3.5 we would have a realistic chance to see reverts working in Eclipse 3.5.
Exporting a Feature using the Export Wizard
Update (10.03.2009): the following bug cannot be reproduced in Eclipse 3.4.2, although the relevant patch is not released in 3.4.x. Leaving this hint here until we know why it works now.
This issue does not relate to normal operation of the OTDT but hits me, e.g., whenever I want to export a new version of the OTDT using the wizard. The problem is described in Eclipse bug 234178 and a patch is provided there.
Although recent changes have significantly improved the situation, Eclipse may still possibly hang during class loading.
- For details see our ticket #122
- and these Eclipse bugs: Eclipse bug 227587, Eclipse bug 221329 and Eclipse bug 212262
- and this top-voted Sun bug: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4670071
(see also http://bugs.sun.com/bugdatabase/top25_bugs.do).
These issues have largely been worked around by:
- Changing the locking strategy of OT/Equinox (now using osgi.classloader.lock=classname instead of osgi.classloader.singleThreadLoads=true).
- Using some obscure and little tested command line options for the Sun JVM
These options are by default added to the eclipse.ini file of your eclipse installation once you install the OTDT.
Unfortunately, as witnessed in Eclipse bug Eclipse bug 212262#c16, this workaround is still buggy.
- Optionally switch to a non-Sun JVM, e.g., from IBM (and prepare to watch different VM-bugs).
Resolve Error during Update
When trying to update the OTDT to a newer version, p2 may answer:
The software items you selected may not be valid with your current installation...
If you click "yes" to "open the wizard", the subsequent dialog shows lots of details, why p2 couldn't find a valid solution to your request. In this case you might be seeing Eclipse bug 244841.
Typical Reason: When installing the OTDT you perhaps selected all three of its features:
- Object Teams Development Tooling
- OTDT Core Patch Feature
- OT/Equinox Feature
The bug occurs if for upgrading you only select the "Object Teams Develpment Tooling", which should actually suffice because it includes the other two features any way. If you consistently installed the OTDT selecting this main feature only, everything should be fine: you may safely continue to only select this one. Only switching between both equivalent ways is not possible, currently.
Common Solution: In this case you should also select the other two features and updating should proceed as normal.
This is being tracked as Eclipse bug 244841.
Installation on IBM Rational products
In general, it should be possible to install either the OTDT or just OT/Equinox in any Eclipse 3.4 based product. (Of course, the OTDT depends at least on an installed JDT.) However, problems can arise if the product uses a different directory layout for plugins. This is the case for the currently released version 7.5 of the IBM Rational Software Architect (RSA) and probably also for other IBM products like RSM or RAD.
Additional instructions for RSA:
- Make backup copies of <install dir>/configuration/config.ini and <install dir>/eclipse.ini.
- Do not install any of the patch features (OSGi, PDE)!
- Just select either OT/Equinox or OTDT for install.
- At the end of the install, close the dialog asking for a restart with "No" and manually exit RSA.
- Look in <bundle pool>/plugins/plugins for org.objectteams.eclipse.transformer.hook_18.104.22.168808082021.jar and org.objectteams.otdt.pde.core.lib_22.214.171.124809030046.jar and copy them to <bundle pool>/plugins.
- Edit <install dir>/configuration/config.ini and remove in the "osgi.bundles=" line the preceding path component "plugins/" for the above mentioned plugins.
- (only for full OTDT install) Edit <install dir>/eclipse.ini and change "osgi.splashPath" back to its original value.
- Start RSA and review correct installation.
Test results for the final OTDT 1.2.0 are here (all are 100% passed!):
- http://www.objectteams.org/distrib/jacks/1.2.0 (jacks test suite: total:2010)
- http://www.objectteams.org/distrib/jacks/1.2.0/junit (junit test suite: total:39800)