0

我创建了两个 Mylyn 扩展(com.xyz.mylyn.ui.MyRepositoryUi 扩展 AbstractRepositoryConnectorUi 和 com.xyz.mylyn.core.MyRepositoryConnector 扩展 AbstractRepositoryConnector)。我通常使用 Eclipse 更新站点选项安装这些自定义扩展插件。

在安装这些自定义插件之前,我还成功安装了先决条件依赖的 Mylyn 插件,即 Mylyn Task List、Mylyn Task Focused Interface 和 Mylyn Wikitext。安装后,我看到以下两个包含我扩展的 Mylyn 类的 jar 正确存在于我的 eclipse 工作空间插件文件夹下。

1] org.eclipse.mylyn.tasks.core_3.6.0.v20110608-1400.jar 包含扩展的 org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector

2] org.eclipse.mylyn.tasks.ui_3.6.2.v20110826-0100.jar 包含扩展的 org.eclipse.mylyn.tasks.ui.AbstractRepositoryConnectorUi

以下是我创建的 ui plugins plugin.xml 文件 -

'<?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>'

但是,在安装自定义插件后,我收到以下错误 -

!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)

我不确定为什么加载的类在 eclipse 工作空间的插件文件夹下可用时无法加载依赖的 Mylyn 库。

任何指针都会有很大帮助。

谢谢,阿迪亚

4

1 回答 1

0

这些插件可能尚未解决/安装。尝试使用以下方法进行检查:

尝试以下操作:打开控制台视图,从控制台的“打开控制台”上下文菜单中选择主机 OSGi 控制台并输入

ss org.eclipse.mylyn.tasks.core

在主机控制台 OSGi 面板中

如果插件不存在,请尝试重新安装 mylyn。如果您使用 RCP 或 PDE,则需要将此插件添加到所需的插件中。

您的分配也可能无效。如果您使用 dropins 文件夹并从 dropins 文件夹更新一些插件,则可能会发生这种情况。

您还可以将 com.xyz.integration.mylyn.ui 插件添加到 com.xyz 的依赖项中...

于 2013-04-09T14:20:43.977 回答