我正在开发一个需要访问类的插件org.eclipse.swt.widgets.Display
。此类包含在org.eclipse.swt.win32.win32.x86_3.5.2.v3557f-RCP20100710-0200.jar
. 但是,该类也由清单导出,com.ibm.rcp.jfaceex_6.2.2.20100729-1241
如下所示:
Export-Package: com.ibm.rcp.jface.action,com.ibm.rcp.jface.launcher,co
m.ibm.rcp.jface.themes,com.ibm.rcp.jface.util,com.ibm.rcp.jface.viewe
rs,com.ibm.rcp.jface.window,com.ibm.rcp.jface.window.effects,com.ibm.
rcp.ui.widgets.api.jface,com.ibm.rcp.ui.widgets.api.swt
Require-Bundle: com.ibm.rcp.swtex,org.eclipse.swt,org.eclipse.core.run
time,org.eclipse.jface,org.eclipse.ui
现在,com.ibm.rcp.jfaceex
不包含在我的 JRE 系统库中。但是,它是一个包,其中包含自己的类以及上面的导出包。
我被引导相信在我自己的项目中我需要做的就是在我自己的项目的构建路径中包含对它的引用,但这似乎不起作用。编译器无法针对org.eclipse.swt.widgets
包中的类解析导入语句。
如果我需要这些类,我究竟需要做什么才能正确导入它们,并且工作量最少?
注意我们没有使用 Maven 或任何第三方构建工具。这是管理层规定的,我无法更改。
更新
根据下面 E-Riz 的建议,我添加org.eclipse.swt
到插件的 Dependencies 选项卡的 Required Bundles 部分。然后,我尝试按如下方式导出项目:
- 右键单击项目,选择导出。
- 选择插件开发 -> 可部署的插件和片段
- 全选,然后点击完成
Eclipse 构建项目,然后告诉我有错误。检查日志会发现以下错误:
1. ERROR in E:\NotesDev\Plug-in\com.ibm.lotuslabs.ui\src\com\ibm\lotuslabs\ui\UI.java (at line 1)
/**
^
The type org.eclipse.swt.widgets.Shell cannot be resolved. It is indirectly referenced from required .class files
我的代码中有很多这样的代码;每个对 org.eclipse.swt 命名空间包中的类或方法的引用。这一点,尽管捆绑包调试得很好!
更新 2
事实上,我发现您可以将绝对路径放入Bundle-Classpath
in 中MANIFEST.MF
。奇怪的是,这使得编译时错误消失了。在这一点上,我不相信这是正确的做法,因为绝对路径肯定不能保证与最终用户的配置相对应。
但是,将插件安装到 Notes(目标平台)中并没有按预期工作。
Notes 报告插件安装成功,但插件(工具栏的一个补充)没有出现。在这一点上,我假设类路径的某些内容仍然不正确。
更新 3
根据请求,MANIFEST.MF
和build.properties
文件。请注意绝对路径是 Eclipse 通过 Dependencies 和 Runtime 选项卡添加的。
MANIFEST.MF
:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Context Plug-in
Bundle-SymbolicName: com.ibm.lotuslabs.context.service;singleton:=true
Bundle-Version: 1.0.2
Bundle-Vendor: IBM
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-Activator: com.ibm.lotuslabs.context.service.internal.ContextPlugin
Bundle-ActivationPolicy: lazy
Bundle-ClassPath: context.jar,
lib/activation-1.1.1.jar,
lib/mail.jar,
lib/SatuitCRM_XML_API2.jar,
lib/commons-lang3-3.1/commons-lang3-3.1.jar,
E:/NotesDev/Notes/framework/rcp/eclipse/plugins/org.eclipse.swt.win32.win32.x86_3.5.2.v3557f-RCP20100710-0200.jar
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.ui,
org.eclipse.ui.views,
org.eclipse.swt,
com.ibm.rcp.swtex,
com.ibm.rcp.jfaceex,
com.satuit.core
Export-Package: com.ibm.lotuslabs.context.service.document,
com.ibm.lotuslabs.context.service.internal
Import-Package: org.eclipse.core.resources
build.properties
:
output.. = bin/
bin.includes = META-INF/,\
context.jar,\
lib/activation-1.1.1.jar,\
lib/mail.jar,\
lib/commons-lang3-3.1.jar,\
lib/SatuitCRM_XML_API2.jar,\
plugin.xml,\
E:/NotesDev/Notes/framework/rcp/eclipse/plugins/org.eclipse.swt.win32.win32.x86_3.5.2.v3557f-RCP20100710-0200.jar
jars.compile.order = context.jar
source.context.jar = src/