导出eclipse可部署插件和片段时出错

导出eclipse可部署插件和片段时出错,eclipse,eclipse-plugin,Eclipse,Eclipse Plugin,我有一个eclipse插件,可以在eclipse环境中正常工作 我想将它导出到一个jar文件中,所以我选择了导出>可部署插件和片段 我可以得到一个jar文件,但报告了一个错误 打开日志文件,它报告我有1242个问题(191个错误,1051个警告)。这是错误日志中的一些副本 2. ERROR in /Users/LSclipse/src/lsclipse/LSDiffRunner.java (at line 61) import edu.washington.cs.induction.

我有一个eclipse插件,可以在eclipse环境中正常工作

我想将它导出到一个jar文件中,所以我选择了导出>可部署插件和片段

我可以得到一个jar文件,但报告了一个错误

打开日志文件,它报告我有1242个问题(191个错误,1051个警告)。这是错误日志中的一些副本

2. ERROR in /Users/LSclipse/src/lsclipse/LSDiffRunner.java (at line 61)
    import edu.washington.cs.induction.OnePipeLineScript;
           ^^^
The import edu cannot be resolved
----------
3. ERROR in /Users/LSclipse/src/lsclipse/LSDiffRunner.java (at line 261)
    OnePipeLineScript.getMatchingForRefFinder(projName, proj1, proj1Loc
    ^^^^^^^^^^^^^^^^^
OnePipeLineScript cannot be resolved
为什么我会出错?我有2049个警告,但在EclipseIDE中编译插件时没有错误

补充 主项目引用了另外两个项目,并引用了许多外部库。我附加包视图和Java构建路径


在开发插件时,不能将第三方库添加到Java的类路径中。这是构建标准Java应用程序的方法,但插件是一种OSGi捆绑包,它具有

正确的方法是将第三方库添加到插件的类路径中

将以下声明添加到插件的MANIFEST.MF

Bundle-ClassPath: lib/log4j-1.2.7.jar,
 xml-apis.jar,
 ...

查看这些链接以了解它。

在开发插件时,不能将第三方库添加到Java的类路径中。这是构建标准Java应用程序的方法,但插件是一种OSGi捆绑包,它具有

正确的方法是将第三方库添加到插件的类路径中

将以下声明添加到插件的MANIFEST.MF

Bundle-ClassPath: lib/log4j-1.2.7.jar,
 xml-apis.jar,
 ...

查看这些链接,以了解它。

这是对潜在问题有疑问并认为是潜在问题的潜在解决方案

  • 这个类是从一个引用的jar进行通信,还是在实际的插件edu.washington.cs.inclution.OnePipeLineScript中

  • 您似乎有很多源文件夹,不知道build.properties文件是否显示任何警告,并且您还为build.properties源中的每个源文件夹定义了警告src/

  • 您的外部jar库似乎位于类型为source的文件夹中,该类型不正确。它应该是一个非源文件夹(您可以通过包图标装饰器告诉源文件夹),并且您应该确保在清单编辑器中检查运行时的lib,以便在构建中包含jar。要取消将其标记为源文件夹,请选择navigator视图中的下拉菜单,转到filters并取消选中.resources,该文件将显示该文件中的.classpath文件。您将看到该文件夹为kind=“src”(我相信)删除该文件夹

  • 不知何故,它也像你有链接的源文件夹,这是一种做法,我不会建议,也不确定这将导致问题时,导出插件。如果你能避免链接源文件夹,那就更好了


  • 另外,您似乎将普通java应用程序的java构建路径配置与OSGI中运行的插件混淆了。OSGI中运行的插件不是通过java构建路径配置的,而是通过manifest.editor配置的。因此,根据经验,如果它是一个插件,那么由于OSGI不同,您甚至不必费心配置java构建路径,这可能也会引起问题

    这就是我们对潜在问题的潜在解决方案有疑问的地方

  • 这个类是从一个引用的jar进行通信,还是在实际的插件edu.washington.cs.inclution.OnePipeLineScript中

  • 您似乎有很多源文件夹,不知道build.properties文件是否显示任何警告,并且您还为build.properties源中的每个源文件夹定义了警告src/

  • 您的外部jar库似乎位于类型为source的文件夹中,该类型不正确。它应该是一个非源文件夹(您可以通过包图标装饰器告诉源文件夹),并且您应该确保在清单编辑器中检查运行时的lib,以便在构建中包含jar。要取消将其标记为源文件夹,请选择navigator视图中的下拉菜单,转到filters并取消选中.resources,该文件将显示该文件中的.classpath文件。您将看到该文件夹为kind=“src”(我相信)删除该文件夹

  • 不知何故,它也像你有链接的源文件夹,这是一种做法,我不会建议,也不确定这将导致问题时,导出插件。如果你能避免链接源文件夹,那就更好了


  • 另外,您似乎将普通java应用程序的java构建路径配置与OSGI中运行的插件混淆了。OSGI中运行的插件不是通过java构建路径配置的,而是通过manifest.editor配置的。因此,根据经验,如果它是一个插件,那么由于OSGI不同,您甚至不必费心配置java构建路径,这也可能导致问题

    此问题涉及多个问题。然而,核心问题是项目
    apimatching
    originanalysis
    不是eclipse插件,而是java项目。结果,这两个项目没有包含在最终的jar文件中,从而破坏了构建

    将两个项目链接到主项目的符号 我通过将src目录符号链接到主eclipse插件项目中解决了这个问题

    ln -s /workspace/seal/edu.ucsc.originanalysis/src /LSclipse/originanalysis
    ln -s /workspace/seal/edu.ucsc.apimatching/src /LSclipse/apimatching
    
    在Java构建路径/源选项卡中,我添加了这两个包含的项目作为源代码

    现在我有了eclipse插件jar文件,没有错误

    然后单击F-5刷新项目浏览器并检查它们是否为java src目录

    选择“生成中包含的项目”选项卡

    在build.properties选项卡中更新
    bin.include
    source..
    非常重要。人们应该明白,在
    bin.include
    中,排序也是至关重要的。lib/cdtparser.jar和lib/cdtcore.jar应该放在它们的用户之前-
    源代码分析/

    复制包含的jar文件