0

我们的 Eclipse RCP 应用程序有一个来自 Eclipse 3.2 的无头 PDE Build 设置,该设置已经运行了多年。我们最近将用于进行无头 PDE 构建的 Eclipse 实例和我们的目标平台都更新到了 3.6(主要是为了能够创建“进入”我们的应用程序的超链接),而无头 PDE 构建现在失败了:

 ...
 [java] generateFeature:
 [java]
 [java] fetch:
 [java]
 [java] generateFeature:
 [java]
 [java] BUILD FAILED
 [java] C:\Projects\[...]\PDE Build\plugins\org.eclipse.pde.build_3.6.2.R36x_20110203\scripts\productBuild\productBuild.xml:39: The following error occurred while executing this line:
 [java] C:\Projects\[...]\PDE Build\plugins\org.eclipse.pde.build_3.6.2.R36x_20110203\scripts\productBuild\productBuild.xml:69: java.lang.NullPointerException
 [java]
 [java] Total time: 0 seconds
 [java] An error has occurred. See the log file
 [java] C:\Projects\[...a separate area dedicated to making builds...]\workspace\.metadata\.log.

日志文件中堆栈跟踪的相关部分似乎是:

java.lang.NullPointerException
at org.eclipse.pde.internal.build.BundleHelper.getProvisioningAgent(BundleHelper.java:104)
at org.eclipse.pde.internal.build.AbstractScriptGenerator.getAssociatedRepositories(AbstractScriptGenerator.java:625)
at org.eclipse.pde.internal.build.AbstractScriptGenerator.getSite(AbstractScriptGenerator.java:332)
at org.eclipse.pde.internal.build.FeatureGenerator.createFeature(FeatureGenerator.java:339)
at org.eclipse.pde.internal.build.FeatureGenerator.generate(FeatureGenerator.java:161)
at org.eclipse.pde.internal.build.tasks.FeatureGeneratorTask.run(FeatureGeneratorTask.java:54)
at org.eclipse.pde.internal.build.tasks.FeatureGeneratorTask.execute(FeatureGeneratorTask.java:36)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
...

PDE BuildEclipse 实例就是根据这个过程创建的。我们试图尽可能地制作一个干净的目标平台,但是(在没有明确的说明或早期成功的情况下)采取解压缩eclipse-rcp-helios-SR2-win32.zip到一个目录然后eclipse-3.6.2-delta-pack.zip在它上面解压缩的方式。

我们如何才能将 PDE 构建过程恢复到正常工作状态?

4

1 回答 1

1

也许我们build.properties太旧了(可能来自 3.2 的模板),或者我们构建目标平台不正确,但是感谢Kai Tödter 的博客文章,我们绝望地尝试的许多潜在补救措施之一是(根据 Kai 的“技巧 1") 从我们的目标平台目录中删除除pluginsfeatures目录之外的所有内容。这至少阻止了 PDE Build 神秘地窒息,然后错误消息将我们引导到我们必须做的其余修复。(在我们的例子中,这些修复几乎完全包括通过单击“添加所需插件”并删除对org.eclipse.ant.optional.junit4片段的引用来更新辅助(测试)产品定义的所需插件列表。)

实际上,似乎仅从目标平台中删除以下任一行configuration/config.ini就足以解除 PDE Build 的粘滞:

eclipse.p2.profile=epp.package.rcp

(或者)

eclipse.p2.data.area=@config.dir/../p2

...虽然我们更愿意把所有东西都去掉,但plugins以免fragments有其他魔法生物隐藏在目标平台中,可能会绊倒我们。

(我们不明白为什么删除其中一行会安抚 PDE Build ......但我们又恢复了业务。)

于 2011-03-17T19:39:12.630 回答