0

この簡単なチュートリアルに基づいて、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 プロジェクト内で [コンピューティングの依存関係] をクリックしたところ、これが 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>

ただし、カスタム プラグインをインストールしてそのビューを表示すると、依存関係が解決されません。

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)
...
4

3 に答える 3

1

そして、この質問からの教訓は

Don't ever use non-API classes, unless you don't care if your plug-in breaks in future versions.

下位互換性がどうしても必要な場合は、プラグインを 2 回ビルドする必要があると思います。

しかしそれ以来

  • Indigo (3.7) をターゲットにしています
  • 暫定パッケージが API になったコンテキストでのバグは、Bug 360301 です。
  • このバグ修正は Mylyn 3.7 に含まれていました。

おそらくorg.eclipse.mylyn.commons.ui、バージョン 3.7 以降を要求するのが最善です。

開発に Eclipse 3.6 を使用しているため、3.7 のインストールを含むターゲット プラットフォームをセットアップする必要があります。

于 2012-11-20T08:50:51.597 に答える
0

ビルドしたのと同じバージョンの mylyn に対してプラグインを実行していますか? mylyn の新しいバージョン (たとえば 3.8.0) では、そのクラスは package に移動されましたorg.eclipse.mylyn.commons.ui.dialog

于 2012-11-19T15:53:31.610 に答える
0

問題: 「同じ」Indigo SR 2 バージョンの Eclipse が使用されていても、それらは等しくありません。そのうちのいくつかは 3.6 バージョンで、org.eclipse.mylyn.commons.ui他のバージョンは 3.8 です (これは Juno のみにあるはずです...)。

于 2012-11-19T21:21:25.913 に答える