これは本当に私を困惑させます。
シナリオ:
- Windows 7 64 ビット
- ロータス ノーツ (8.5.2)
- エクリプスヘリオス
- Java 6 Update 33 (64 ビット) と JDK 7
- プラグイン プロジェクト用にインストールされた JRE は、Notes の下にインストールされた JVM (つまり、
C:\NotesDev\Notes\jvm
) を使用するように設定されています。 - Target Platform は、上記でインストールされた JRE を使用し、 [場所] タブに
framework\rcp\eclipse
およびframework\shared\eclipse
サブフォルダーをインポートします。2 つのフォルダー間で合計 713 個のプラグインが利用可能であることがわかります。 - 実行構成には、選択された合計 714 個のプラグインが表示されます (これには、ターゲット プラットフォームの 713 個と私のものが含まれます)。
org.eclipse.swt.win32.win32.x86_3.5.2.v34557f-RCP20100710-0200.jar
このリストにはとの両方が含まれていることがわかりますcom.ibm.rcp.swtex.win32_6.2.2.20100729-1241.jar
。
問題:
- 前述の 2 つの JAR ファイルをビルド パスに明示的に含めないと、アプリケーションはコンパイルに失敗します (および をインポートしようとします
org.eclipse.swt.widgets.Display
)com.ibm.rcp.swt.swidgets.SToolItem
。 - 前述の JAR ファイルをビルド パスに含めると、アプリケーションはコンパイルされますが、
NoClassDefFound
例外のために実行されません。
質問:
- そもそもなぜこれらのファイルを含める必要があるのですか? それらはワークスペースの一部であり、私が参照している他の JAR ファイルは明示的に参照する必要がないようです。
- 実行時にこれが失敗するのはなぜですか? 私の理解では
NoClassDefFound
、クラスはコンパイル時に使用可能でしたが、実行時には使用できなかったために発生します。しかし、これは同じマシンで発生しています。(ローカルでデバッグしようとしていて、JAR ファイルをエクスポート用にマークしました!)
ファイルがランタイム構成のロードされたプラグインタブにリストされている場合、それらを明示的に参照する必要はないように思えます。これに関して私は間違っていますか?(親切にしてください!私は確かにこれの専門家ではありません。)
前もって感謝します。
PSビルドパスにファイルを含めるMANIFEST.MF
と、ファイルと.CLASSPATH
ファイルの両方で適切に参照されていることがわかります。
マニフェスト.MF コンテンツ
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Plugin
Bundle-SymbolicName: com.satuit.crm.plugin;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: com.satuit.crm.plugin.Activator
Bundle-Vendor: Satuit Technologies, Inc.
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.apache.axis,
org.eclipse.ui;bundle-version="3.4.2",
org.eclipse.core.runtime;bundle-version="3.4.0",
org.eclipse.ui.views;bundle-version="3.3.1",
com.ibm.rcp.jfaceex;bundle-version="6.2.2"
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ActivationPolicy: lazy
Export-Package: com.satuit.crm.plugin,
com.satuit.crm.plugin.document,
com.satuit.crm.plugin.ui,
com.satuit.crm.webservice.agent
Bundle-ClassPath: .,
/NotesDev/Notes/framework/rcp/eclipse/plugins/org.eclipse.swt.win32.win32.x86_3.5.2.v3557f-RCP20100710-0200.jar,
/NotesDev/Notes/framework/rcp/eclipse/plugins/com.ibm.rcp.swtex.win32_6.2.2.20100729-1241.jar,
/NotesDev/lib/activation-1.1.1.jar,
/NotesDev/lib/mail.jar,
/NotesDev/lib/commons-lang3-3.1.jar,
/NotesDev/lib/SatuitCRM_XML_API2.jar
** .クラスパスの内容 **
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry exported="true" kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry exported="true" kind="lib" path="C:/NotesDev/Notes/framework/rcp/eclipse/plugins/org.eclipse.swt.win32.win32.x86_3.5.2.v3557f-RCP20100710-0200.jar"/>
<classpathentry exported="true" kind="lib" path="C:/NotesDev/Notes/framework/rcp/eclipse/plugins/com.ibm.rcp.swtex.win32_6.2.2.20100729-1241.jar"/>
<classpathentry exported="true" kind="lib" path="C:/NotesDev/Workspace/lib/commons-lang3-3.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/NotesDev/Workspace/lib/activation-1.1.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/NotesDev/Workspace/lib/mail.jar"/>
<classpathentry exported="true" kind="lib" path="C:/NotesDev/Workspace/lib/SatuitCRM_XML_API2.jar"/>
<classpathentry exported="true" kind="lib" path="C:/NotesDev/Notes/framework/rcp/eclipse/plugins/org.apache.axis_1.4.0.20100729-1241/axispatch.jar"/>
<classpathentry exported="true" kind="lib" path="C:/NotesDev/Notes/framework/rcp/eclipse/plugins/org.apache.axis_1.4.0.20100729-1241/axis.jar"/>
<classpathentry exported="true" kind="lib" path="C:/NotesDev/Notes/framework/rcp/eclipse/plugins/org.apache.axis_1.4.0.20100729-1241/jaxrpc.jar"/>
<classpathentry exported="true" kind="lib" path="C:/NotesDev/Notes/framework/rcp/eclipse/plugins/org.apache.axis_1.4.0.20100729-1241/saaj.jar"/>
<classpathentry exported="true" kind="lib" path="C:/NotesDev/Notes/framework/rcp/eclipse/plugins/org.apache.axis_1.4.0.20100729-1241/wsdl4j-1.5.1.jar"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>