Monthly Archive for: ‘October, 2010’

Eclipse RCP 3.6.x: Got Headless PDE Build working

In one of my previous posts I had some issues to get the headless 3.6.x PDE build running for a few of my RCP projects. But I quickly got many very helpful comments and now I have the build up and running on Windows Vista/7. I have to admit that the tricks I describe below considered to be hacks rather than a clean solution, but on the other hand it works at least for my RCP applications.

Trick 1: Modify the target 3.6.x platform
Usually I create my target platforms just by unzipping an Eclipse SDK and the corresponding delta pack. But this did not work with 3.6.x, as described in my previous post about PDE build. I got lots of unresolved dependencies. The trick to get rid of many of them is to delete everything from the target platform except the plugins and features directory. If your RCP application is not using p2 related stuff, then there is a good chance that the build will succeed. In my RCP applications I include the feature org.eclipse.equinox.p2.user.ui in my product configurations, that leads to an unresolved dependency to org.eclipse.compare. If you see the same in your build, then trick 2 might help.

Trick 2: Manually remove dependency to org.eclipse.compare (if not needed)
If your RCP application just uses p2 for self-updating, then you probably don’t need a dependency to org.eclipse.compare. How to remove it manually I described in my blog post “Eclipse RCP p2 self-update with Eclipse 3.6.x“.

With above modifications I got the build running again. Please let me know, if these tricks work on other platforms, too. I explicitly want to thank Alexander, Albert MacSweeny and Frode for their helpful comments in my previous post about PDE build.

Have Fun!

Kai
Follow me on Twitter

Eclipse RCP p2 self-update with Eclipse 3.6.x

4

If you are using the feature org.eclipse.equinox.p2.user.ui in your RCP product to include the p2 update mechanism in your application, or if you just use p2 internally, you might run into some issues with Eclipse 3.6.x. If your update is not working and or you get a log entry “the update checker service is not initialized”, then probably the OSGi bundle org.eclipse.equinox.ds is not started properly. The easiest way to solve this issue is to include org.eclipse.equinox.ds with start level 2 in your product configuration (in the configuration tab, see screenshot below)

Another thing is the newly introduced dependency of the bundle org.eclipse.equinox.p2.ui.sdk to org.eclipse.compare, which depends on org.eclipse.ui.ide… If you just want to use RCP self-updating, here is a recipe how to get rid of this dependency:

  • Import org.eclipse.equinox.p2.ui.sdk as source into your Eclipse IDE
  • Delete dependency to org.eclipse.compare
  • Delete class RevertProfilePageWithCompare
  • Export the bundle
  • Replace the original org.eclipse.equinox.p2.ui.sdk with the newly exported version in your target platform

I would like to thank Alexander (comment in my last post) for the pointer to a p2-dev mailing list entry.

With these 2 tips I got p2 self update for my MP3 Manager running again with Eclipse 3.6.x. I also got the headless PDE build running again and will blog about that later.

Have Fun!

Kai
Follow me on Twitter

Oh No! My headless PDE build failed with Eclipse 3.6.1 :(

12

Yesterday I decided to update the headless builds for several of my Eclipse RCP based projects to Eclipse 3.6.1. No big deal, I thought. I did this several times in the last years and it took me only minutes. But this time, I can’t get the build running. My platform is Windows 7 32bit and I get the following errors:


[p2.director] An error occurred while collecting items to be installed
[p2.director]  session context was:(profile=profile,
phase=org.eclipse.equinox.internal.p2.engine.phases.Collect, operand=, action=).
[p2.director]  No repository found containing: osgi.bundle,org.apache.ant,1.7.1.v20100518-1145
[p2.director]  No repository found containing: osgi.bundle,org.eclipse.ant.core,3.2.200.v20100427
[p2.director]  No repository found containing: osgi.bundle,org.eclipse.compare,3.5.100.I20100526-0800
[p2.director]  No repository found containing: osgi.bundle,org.eclipse.compare.core,3.5.100.I20100526-0800
[p2.director]  No repository found containing: osgi.bundle,org.eclipse.core.filebuffers,3.5.100.v20100520-0800
[p2.director]  No repository found containing: osgi.bundle,org.eclipse.core.variables,3.2.400.v20100505
[p2.director]  No repository found containing: osgi.bundle,org.eclipse.equinox.concurrent,1.0.100.v20100503
[p2.director]  No repository found containing: osgi.bundle,org.eclipse.jface.text,3.6.1.r361_v20100825-0800
[p2.director]  No repository found containing: osgi.bundle,org.eclipse.text,3.5.0.v20100601-1300
[p2.director]  No repository found containing: osgi.bundle,org.eclipse.ui.editors,3.6.1.r361_v20100825-0800
[p2.director]  No repository found containing: osgi.bundle,org.eclipse.ui.ide,3.6.1.M20100825-0800
[p2.director] An error occurred while collecting items to be installed
...
BUILD FAILED

My RCP application does NOT have any dependencies to the above bundles. I found some hints here and a bug here, but did not find a working solution yet.

Is anybody out there who got a working headless PDE build under Windows using Eclipse 3.6.1?

If so, please let me know, I will update this post if I get it working.

Thanks

Kai
Follow me on Twitter