I have created two Mylyn extensions (com.xyz.mylyn.ui.MyRepositoryUi extending AbstractRepositoryConnectorUi and com.xyz.mylyn.core.MyRepositoryConnector extending AbstractRepositoryConnector). I usually install these custom extension plugin using the Eclipse update site option.
Before installing these custom plugins I have also successfully installed the prerequisit dependent Mylyn plugins viz Mylyn Task List, Mylyn Task Focused Interface and Mylyn Wikitext. Upon install I see that the following two jars containing the Mylyn classes which I have extended from are correctly present under my eclipse work spaces plugins folder.
1] org.eclipse.mylyn.tasks.core_3.6.0.v20110608-1400.jar containing the extended org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector
2] org.eclipse.mylyn.tasks.ui_3.6.2.v20110826-0100.jar containing the extended org.eclipse.mylyn.tasks.ui.AbstractRepositoryConnectorUi
The following is ui plugins plugin.xml file created by me -
'<?xml version="1.0" encoding="UTF-8"?>'
'<?eclipse version="3.2"?>'
'<plugin>'
'<extension point="org.eclipse.mylyn.tasks.ui.repositories">'
'<connectorCore class="com.xyz.mylyn.core.MyRepositoryConnector"'
'id="com.xyz.mylyn.core.myrepositoryconnector"'
'name="My Repository Connector"'
'type="My"/>'
'<connectorUi brandingIcon="images/connectionsmall.gif"'
'class="com.xyz.mylyn.ui.MyRepositoryUi" id="com.xyz.mylyn.ui.myconnectorui"'
'name="Connector UI" overlayIcon="images/mobius.gif"/>'
'<taskListMigrator class="com.xyz.mylyn.ui.MyTaskListMigrator"/>'
'</extension>'
'<extension'
'point="org.eclipse.mylyn.tasks.ui.editors">'
'<pageFactory'
'class="com.telelogic.synergy.integration.mylyn.ui.editor.MyTaskEditorPageFactory"'
'id="com.ibm.rational.synergy.integration.mylyn.ui.editor.mytaskeditorpagefactory">'
'</pageFactory>'
'</extension>'
'</plugin>'
However upon installing the custom plugins I get the following error -
!ENTRY org.eclipse.mylyn.tasks.ui 4 0 2013-03-22 14:50:46.117
!MESSAGE Repository connectors failed to load.
!SUBENTRY 1 org.eclipse.mylyn.tasks.ui 4 0 2013-03-22 14:50:46.117
!MESSAGE Could not load connector core
!STACK 1
org.eclipse.core.runtime.CoreException: Plug-in com.xyz.integration.mylyn.ui was unable to load class com.xyz.mylyn.core.MyRepositoryConnector. at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.throwException(RegistryStrategyOSGI.java:194)
at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:178)
at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:905)
at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55)
at org.eclipse.mylyn.internal.tasks.ui.util.TasksUiExtensionReader$ConnectorDescriptor.createConnector(TasksUiExtensionReader.java:95)
at org.eclipse.mylyn.internal.tasks.ui.util.TasksUiExtensionReader.initConnectorCores(TasksUiExtensionReader.java:327)
at org.eclipse.mylyn.internal.tasks.ui.util.TasksUiExtensionReader.initStartupExtensions(TasksUiExtensionReader.java:245)
at org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin.start(TasksUiPlugin.java:583)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
at java.security.AccessController.doPrivileged(Native Method)
...
...
which is caused by the following exception -
Caused by: java.lang.NoClassDefFoundError: AbstractRepositoryConnector
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java:188)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClassHoldingLock(ClasspathManager.java:632)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:607)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:568)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:492)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:465)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:395)
at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:35)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:461)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:340)
at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:229)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1212)
at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:174)
... 112 more
Caused by: java.lang.ClassNotFoundException: AbstractRepositoryConnector
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
I am not sure why the classloaded is failing to load the dependent Mylyn libraries when they are available under the eclipse work space's plugins folders.
Any pointers will be of great help.
Thanks, Aditya