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

时间:2012-12-21 03:16:32

标签: eclipse eclipse-plugin

我有一个eclipse插件在eclipse环境中正常工作。

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

enter image description here

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

enter image description here

打开日志文件,它报告我有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中编译插件时没有错误。

ADDED

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

enter image description here enter image description here

4 个答案:

答案 0 :(得分:3)

此问题涉及多个问题。但是,核心问题是项目apimatchingoriginanalysis不是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 Build Path / Source选项卡中,我将这两个包含的项目添加为源。 Eclipse Java Missing required source folder: 'src'

现在我没有错误地插入了eclipse插件jar文件。

enter image description here enter image description here

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

在“构建”选项卡中选择包含的项目。

enter image description here

在build.properties标签中更新bin.includesource..非常重要。人们应该明白,在bin.include中,排序也是至关重要的。 lib / cdtparser.jar和lib / cdtcore.jar应该放在他们的用户之前 - origin analysis/

enter image description here

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

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

enter image description here

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

enter image description here

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

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

enter image description here

答案 1 :(得分:1)

开发插件时,无法将第三方库添加到Java的类路径中。这是构建标准Java应用程序的方法,但插件是一种具有itself rule for class loading的OSGi包。

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

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

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

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

答案 2 :(得分:1)

这是一个有问题并被视为潜在问题的潜在解决方案的问题。

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

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

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

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

  5. 对于普通的java应用程序来说,似乎你混淆了java构建路径配置,其中插件运行在OSGI中,而不是通过java构建路径配置而是你的manifest.editor所以作为一个经验法则,如果它的插件不是甚至懒得尝试配置java构建路径因为OSGI不同,这也可能导致问题

答案 3 :(得分:-1)

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