java - Eclipse 插件开发 : Unable to resolve dependencies

标签 java eclipse eclipse-rcp eclipse-plugin

基于此simple tutorial ,我正在尝试显示弹出窗口通知,作为 org.eclipse.mylyn.commons.ui 依赖项的一部分。因此,我已将此依赖项添加到我的plugin.xml 中,如下所示:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Roll and Scroll Recorder
Bundle-SymbolicName: ATF_Recorder_Plugin;singleton:=true
Bundle-Version: 0.0.502
Bundle-Activator: com.jcraft.eclipse.jcterm.JCTermPlugin
Require-Bundle: org.eclipse.ui,
 org.eclipse.core.runtime,
 com.jcraft.jsch;bundle-version="0.1.31",
 org.eclipse.core.resources;bundle-version="3.7.101",
 org.eclipse.jsch.core;bundle-version="1.1.300",
 com.jcraft.eclipse.jsch.core,
 org.eclipse.mylyn.commons.ui;bundle-version="3.6.1"
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-Vendor: OSEHRA

此外,我在功能项目中单击了计算依赖项,现在已将其更新到我的 feature.xml 文件中:

<requires>
  <import plugin="org.eclipse.ui"/>
  <import plugin="org.eclipse.core.runtime"/>
  <import plugin="com.jcraft.jsch" version="0.1.31" match="greaterOrEqual"/>
  <import plugin="org.eclipse.core.resources" version="3.7.101" match="greaterOrEqual"/>
  <import plugin="org.eclipse.jsch.core" version="1.1.300" match="greaterOrEqual"/>
  <import plugin="com.jcraft.eclipse.jsch.core"/>
  <import plugin="org.eclipse.mylyn.commons.ui" version="3.6.1" match="greaterOrEqual"/>
</requires>

但是,当我安装自定义插件并显示它的 View 时,依赖关系从未得到解决:

java.lang.ClassNotFoundException: org.eclipse.mylyn.internal.provisional.commons.ui.AbstractNotificationPopup
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java:188)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClassHoldingLock(ClasspathManager.java:626)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:601)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:562)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:486)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:459)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:476)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(Unknown Source)
at com.jcraft.eclipse.jcterm.JCTermView.createPartControl(JCTermView.java:189)
at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:375)
at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:229)
at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595)
at org.eclipse.ui.internal.Perspective.showView(Perspective.java:2245)
...

最佳答案

这个问题的教训是

永远不要使用非 API 类,除非您不关心插件在未来版本中是否会损坏

如果您绝对需要向后兼容性,我想您必须构建插件两次。

但是,自从

  • 您的目标是 Indigo (3.7)
  • 临时包成为 API 的错误是 Bug 360301
  • Mylyn 3.7 中包含此错误修复

您可能最好需要 org.eclipse.mylyn.commons.ui 版本 3.7 及更高版本。

由于您使用 Eclipse 3.6 进行开发,因此您必须设置一个目标平台,包括 3.7 安装。

关于java - Eclipse 插件开发 : Unable to resolve dependencies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13457031/

相关文章:

java - 组合字段编辑器。动态改变值

java - Nebula gridTableViewer 单元格内容应该换行

java - Android VideoRecording 错误,无法创建文件路径

eclipse - JIRA 中的 Git-Flow 和按问题分支工作流程可以协同工作吗?

java - 加入mapreduce

android - 如何在 Eclipse 中调试 Android/Java

java - OleControl 中的错误导致 JVM 完全崩溃 - 如何抑制?

java - 使用 Maven 构建 Eclipse 项目

java - Java 应用程序中的简单 Web 服务

Java HTML 解析