2

我有一个 Eclipse 插件在 Eclipse 环境中运行良好。

我想把它导出成一个 jar 文件,所以我选择了 Export > Deployable plugins and Fragments。

在此处输入图像描述

我可以得到一个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 个警告,但在 eclipse IDE 中编译插件时没有错误。

添加

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

在此处输入图像描述 在此处输入图像描述

4

4 回答 4

3

这个问题涉及多个问题。但是,核心问题是该项目不是 Eclipse 插件,apimatchingoriginanalysis只是 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 Build Path/Source 选项卡中,我将这两个包含的项目添加为源。Eclipse Java 缺少所需的源文件夹:'src'

现在我有没有错误的eclipse插件jar文件。

在此处输入图像描述 在此处输入图像描述

然后单击 F-5 刷新项目资源管理器并检查它们是 java src 目录。

在 Build 选项卡中选择包含的项目。

在此处输入图像描述

更新bin.includesource..在 build.properties 选项卡中很重要。应该明白,在bin.include订购中也很关键。lib/cdtparser.jar 和 lib/cdtcore.jar 应该放在它们的用户之前 - origin analysis/

在此处输入图像描述

将包含项目的 jar 文件复制到主项目中

我还必须将这些项目文件中的一些 jar 文件复制到主项目中,然后在Binary Build选项卡中选择它们。

在此处输入图像描述

并在 Runtime/Classpath 选项卡中添加 tim。

在此处输入图像描述

在执行环境中选择 JavaSE-1.6。

我有很多“必须覆盖超类方法”错误。有了这篇文章的提示 - 'Must Override a Superclass Method' Errors after importing a project into Eclipse,我删除了 J2SE-1.5 来解决这个问题。

在此处输入图像描述

于 2012-12-22T04:53:17.403 回答
1

开发插件时,不能将第三方库添加到 Java 的类路径中。它是构建标准 Java 应用程序的方式,但插件是一种 OSGi 包,它有自己的类加载规则

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

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

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

检查这些链接[1][2]以了解它。

于 2012-12-21T07:56:55.413 回答
1

这就是有问题的地方,并将其视为潜在问题的潜在解决方案。

  1. 此类是来自引用的 jar 还是在实际插件 edu.washington.cs.induction.OnePipeLineScript 中;

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

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

  4. 不知何故,您似乎也链接了源文件夹,这是我不建议的做法,并且不确定在导出插件时是否会导致问题。如果您可以避免链接源文件夹会更好。

此外,您似乎将普通 java 应用程序的 java 构建路径配置与在 OSGI 中运行的插件混淆了,这些插件不是通过 java 构建路径配置的,而是您的 manifest.editor 所以作为一个经验法则,如果它的插件甚至不费心去尝试配置 java 构建路径,因为 OSGI 不同,这也可能导致问题

于 2012-12-21T22:40:47.417 回答
-1

在选项中选择“使用工作区中编译的类文件”对我有用。

于 2018-09-12T06:32:35.437 回答