この質問は、これに対するフォローアップです。Paul Websterは、私の問題の多くを理解するのを丁寧に助けてくれましたが、1つの厄介な問題が残っており、プラグインをデバッグしているときではなく、プラグインをエクスポートしているときのクラスパスの問題に帰着すると確信しています。 。
これは、Web上のさまざまなソース(このページは非常に貴重なリソースでした)から情報を取得することによって、これまでに私が理解した疑わしい情報です。
Bundle-Classpath
プラグインは、MANIFEST.MFファイルのに完全に依存しています。クラスがJREシステムライブラリ、プラグイン依存関係、またはフォルダまたはJARのいずれにも見つからない場合、Bundle-Classpath
またはNoClassDefFound
例外NoClassFound
が発生します。Require-Bundle
私が作成しているバンドルにのみ使用してください。(つまり、私のワークスペースにバンドルがあります。つまり、私のRequire-Bundle
リストはかなり短くなります。)Import-Package
バンドルに必要なサードパーティパッケージに使用します。このリストは、使用しているサードパーティパッケージの数によっては、かなり大きくなる可能性があります。- サードパーティのパッケージが必要で、エクスポートされない場合は、そのバンドルを作成して、そのパッケージをエクスポートする必要があります。次に、それを必要とするパッケージで、エクスポートバンドルをインポートする必要があります。
- バンドル自体にバンドル内のパッケージが含まれていて、それらをエクスポートする場合は、これらのパッケージをインポートされたパッケージとしてマニフェストに入れないでください。(つまり、バンドルによって既にエクスポートされているパッケージを再エクスポートしないでください。)
(コミュニティが修正したときに、上記の情報を更新します。)
そのため、これらすべてを念頭に置いて、MANIFEST.MFファイルを作り直し、上記のルールを遵守するようにしました。アプリケーションをデバッグすると、すべてが美しく機能します。すべてのクラスが見つかり、プラグインは期待どおりに実行されますが、プラグインをエクスポートしようとすると、状況が醜くなります。
プラグインをエクスポートしようとすると、1つを除いてすべてのプロジェクトがコンパイルされます。ログファイルには、次のメッセージが含まれています。
# 7/3/12 10:09:57 AM EDT
# Eclipse Compiler for Java(TM) 0.A76_R36x, 3.6.2, Copyright IBM Corp 2000, 2010. All rights reserved.
----------
1. ERROR in E:\NotesDev\NotesPlugin\com.auth.lotusplugin.popdlg\src\com\auth\lotusplugin\popdlg\SettingsDialog2.java (at line 0)
package com.auth.lotusplugin.popdlg;
^
The type com.ibm.rcp.swt.swidgets.SCoolBar cannot be resolved. It is indirectly referenced from required .class files
----------
1 problem (1 error)
今、私はそれがによってエクスポートされることを決定しましcom.ibm.rcp.swt.swidgets.SCoolBar
た。com.ibm.rcp.swtex.win32_6.2.2.20100729-1241.jar
これはたまたまによってエクスポートされcom.ibm.rcp.jfaceex_6.2.2.20100729-1241.jar
ます。私のプロジェクトでは、次のことを行いました。
- [依存関係]タブ
com.ibm.rcp.jfaceex
からに追加のバンドルとして追加されました。build.properties
com.ibm.rc.swt.swidgets
[依存関係]タブにインポートされたパッケージとして追加されました。
それでも、プラグインをエクスポートしようとすると、クラスが見つかりません。この時点で、プラグインのデバッグ時とエクスポート時のコンパイル方法には根本的な違いがあり、その違いが何であるかはわかりません。
誰かがこの最後の問題を解決するのを手伝ってくれるなら、私は本当に感謝しています。
MANIFEST.MF
およびファイルの関連部分は、build.properties
参照用に以下に含まれています。
MANIFEST.MF
Require-Bundle: com.ibm.lotuslabs.context.service,
com.ibm.lotuslabs.ui,
com.SatuitCRM.WebServices
Import-Package: com.ibm.rcp.jface.action,
com.ibm.rcp.swt.swidgets,
javax.swing,
lotus.domino,
lotus.notes,
org.eclipse.jface.action,
org.eclipse.jface.window,
org.eclipse.swt,
org.eclipse.swt.events,
org.eclipse.swt.graphics,
org.eclipse.swt.layout,
org.eclipse.swt.widgets,
org.eclipse.ui.plugin,
org.osgi.framework
Export-Package: com.auth.lotusplugin.popdlg;
uses:="com.ibm.rcp.jface.action,
com.ibm.lotuslabs.context.service.document,
com.ibm.lotuslabs.ui,
com.ibm.rcp.jface.action,
com.ibm.rcp.swt.swidgets,
com.satuit.core,
com.SatuitCRM.WebServices,
javax.swing,
lotus.domino,
lotus.notes,
org.eclipse.jface.action,
org.eclipse.jface.window,
org.eclipse.swt,
org.eclipse.swt.events,
org.eclipse.swt.graphics,
org.eclipse.swt.layout,
org.eclipse.swt.widgets,
org.eclipse.ui.plugin,
org.osgi.framework"
Bundle-ClassPath: .,
com.satuit.core.jar,
com.ibm.lotuslabs.ui.jar,
com.ibm.lotuslabs.context.service.jar,
com.SatuitCRM.WebService.jar,
lib/activation-1.1.1.jar,
lib/commons-lang3-3.1.jar,
lib/mail.jar,
lib/SatuitCRM_XML_API2.jar
build.properties
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
plugin.xml,\
lib/commons-lang3-3.1.jar,\
lib/activation-1.1.1.jar,\
lib/mail.jar,\
lib/SatuitCRM_XML_API2.jar,\
.
additional.bundles = com.ibm.rcp.browser.ie,\
com.ibm.rcp.jfaceex