Hi everybody,
BTW, just saw Peter's email. Judging from the latest CVS changes, I believe he followed the same approach. I would also suggest adding “Eclipse-ExtensibleAPI” to the com.skype plug-in.
Below is my shot at the problem.
The issue is that there is platform-specific code (WindowsConnector) in a platform independent plug-in (com.skype). On the build machine this code gets compiled against the org.eclipse.swt...linux fragment. At runtime, on windows it runs against the org.eclipse.swt...win32 fragment and breaks.
I believe the solution is to put the WindowsConnector into a platform-specific
com.skype...win32 fragment and not have in in the com.skype plug-in. Hopefully PDE Build is then smart enough to compile this against the org.eclipse.swt + org.eclipse.swt.win32... fragment.
This also touches a second problem with the com.skype plug-in. It requires the
org.eclipse.swt bundle. However by inspecting the code, I believe that the dependency is only needed for the WindowsConnector and there is a fall back mechanism if SWT is not present (Win32Connector). Currently a non-availability of SWT will result in the com.skype plug-in not resolving and *prevent* normal operation of the plug-in.
To address both issues I've tried these changes:
- Creating a com.skype.swt.win32.win32.x86 fragment. This fragment has a dependency to org.eclipse.swt. The WindowsConnector is placed in that fragment. The com.skype plug-in itself has now *no* dependency to org.eclipse.swt.
Note that there are now two windows fragments, one for the SWT-based connector (com.skype.swt.win32.win32.x86) and one for the plain connector (com.skype.win32.win32.x86)
- For uniformity and discouraging developers from using the platform specific connectors directly, I've moved the packages com.skype.connector.{osx,linux,windows} from the plug-in into respective fragments.
- Added "Eclipse-ExtensibleAPI: true" to the MANIFEST.MF of com.skype. This is so that PDE can deal with fragments contributing Java classes to the plug-in (see Eclipse Help).
- I took the liberty of using 0.3.0 as the version in all fragments.
Unfortunately I don't have a linux machine around, so I would be glad if somebody could give it a try and let my know if this helps.
Regards,
Elias.