如何在另一个eclipse插件项目中调用jar中的方法?

时间:2014-03-04 05:31:52

标签: java eclipse jar eclipse-plugin

我想从另一个依赖于项目的eclipse插件项目中调用jar中的方法。但是eclipse无法解析jar中的类名。

实施例

我创建了com.plugin.maincom.plugin.sub项目。

  • 将poi-ooxml-xxx.jar添加到com.plugin.sub项目中,并通过首选项对话框添加了构建路径。
  • 将jar中的所有包作为导出包添加到com.plugin.sub project中的MANIFEST.MF。
  • 在com.plugin.main项目中为MANIFEST.MF添加了com.plugin.sub作为必需的插件。

但是eclipse无法从com.plugin.main.actions.SampleAction解析jar WorkbookFactory中的类名。为什么呢?

projects info

信息:

  • eclipse 3.6(Helios)
  • 的JavaSE-1.7。
  • WorkbookFactory的FQCN为org.apache.poi.ss.user.model.WorkbookFactory

com.plugin.main中的MANIFEST.MF:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Main
Bundle-SymbolicName: com.plugin.main; singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: com.plugin.main.Activator
Bundle-Vendor: PLUGIN
Require-Bundle: com.plugin.sub;visibility:=reexport,
 org.eclipse.ui,
 org.eclipse.core.runtime
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-ActivationPolicy: lazy

com.plugin.sub中的MANIFEST.MF:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Sub
Bundle-SymbolicName: com.plugin.sub
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: com.plugin.sub.Activator
Bundle-Vendor: PLUGIN
Require-Bundle: org.eclipse.ui,
 org.eclipse.core.runtime
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-ActivationPolicy: lazy
Export-Package: org.apache.poi.ss.usermodel
Bundle-ClassPath: poi-ooxml-3.8-beta3-20110606.jar,
 .

com.plugin.sub中的build.properties:

source.. = src/
output.. = bin/
bin.includes = META-INF/,\
               .,\
               poi-ooxml-3.8-beta3-20110606.jar

2 个答案:

答案 0 :(得分:2)

试试这些:

  1. Manifest Editor中打开项目的清单文件。转到Runtime标签。在Class path部分中,检查条目。如果不存在,请添加.(表示当前文件夹)。如果存在.条目,则将其移至顶部。保存编辑器并检查。

  2. 右键单击com.plugin.main项目,然后转到“属性”。转到Java Build Path。在右侧,转到Project标签。然后添加com.plugin.sub项目。

  3. 如果采用了第2点,那么请记住在eclipse之外导出和运行后测试应用程序。

答案 1 :(得分:1)

将jar添加到项目

的错误方法

您可以通过“首选项对话框中的库”选项卡中的Add JARs按钮添加jar。

enter image description here

然后,项目中的.class文件将自动编辑,如下所示:

<classpath>
    ...
    <classpathentry kind="lib" path="poi-ooxml-3.8-beta3-20110606.jar"/>
</classpath>

但添加的标记应具有exported属性,如下所示:

<classpath>
    ...
    <classpathentry exported="true" kind="lib" path="poi-ooxml-3.8-beta3-20110606.jar"/>
</classpath>

不会自动生成。您必须手动在Order and Export标签中添加标记。

将罐子添加到项目中的正确方法

在eclipse中,您不应手动编辑Java Build Path。您应该使用Plug-in Manifest Editor,因为在您通过编辑器编辑数据时会自动编辑.class。此外,build.propertiesplugin.xmlMANIFEST.MF也会自动正确编辑。

将jar添加到项目时,必须在Plug-in Manifest Editor的Runtime选项卡中使用Classpath部分。通过该部分添加广告时,classpathentry文件中将添加export带有.class属性的标记。不仅如此,jar将作为二进制包含在build.properties中添加。

enter image description here