Eclipse插件无法从类文件夹中找到类

3
我正在开发一个 Eclipse 插件,想要使用一些预编译的类,我把它们放到了项目中的 lib/ 文件夹下(所以目录结构看起来像是 {proj_root}/lib/com/example/Required.class)。然后我将 lib/ 文件夹添加为项目的类文件夹。在构建时,一切都正常工作,我可以在代码中导入并使用那些类。但现在问题是,在单独的 Eclipse 实例中运行我的插件时,我的插件引用了预编译类文件夹中的类时会出现 ClassNotFoundException 错误。
我尝试在“构建路径”设置中的“顺序和导出”选项卡中指定我的类文件夹。我还尝试在插件的 build.properties GUI 编辑器中在 lib/ 文件夹前面设置复选框,以便在二进制构建中包含它。在这种情况下,如果我将插件导出为 JAR 文件,我可以看到其中包含 lib/ 文件夹,以及我的类文件,但在运行时,我的插件仍然无法找到来自 lib/ 的任何类。
请问我应该如何告诉 Eclipse 在运行时在哪里找到这些类?
附注:
  1. 我在 Stack Overflow 上研究了这个问题,但所有的建议都是一样的:只需在项目的构建路径中添加类文件夹。
  2. 在插件的 build.properties 文本编辑器中,Eclipse 显示警告:类文件夹“lib/”未与任何输出库条目相关联。 并建议进行以下代码修改:output.. = bin /,lib /。我尝试过这个解决方案,但似乎对问题没有什么改变。

请查看JAR文件,以确定它是否包含您所需的类文件。 - Philipp Sander
它确实包含类文件(在lib/文件夹下,而不是通常存储在插件JAR根目录中的“我的”类),正如我所说,但后者在运行时找不到。 - xmichael91
1个回答

7

看起来你已经将lib文件夹添加到插件项目的“Java Build Path”属性页中。

但是……对于插件项目,这样做是行不通的,因为它们是OSGi捆绑包 - 您必须在PDE编辑器的“Runtime”页面中包含lib文件夹:

Classpath description for OSGi


非常抱歉之前的评论,我没有仔细阅读您的建议,并尝试在build.properties编辑器中添加库,而不是PDE(plugin.xml)编辑器。感谢您的帮助,它起作用了。 - xmichael91

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接