我的问题是:Eclipse Oxygen(4.7.2)无法设置我所有工作区中的目标平台,即使它们可以(并且可以)由 Eclipse Neon 设置。每个工作区似乎只能执行一次,之后我既不能重置相同的目标平台,也不能切换到另一个目标平台。
我猜您需要在 Eclipse Oxygen 中设置的首选项中有一个标志或设置,而 Neon 中不存在,因为设置目标平台(并在其中两个平台之间切换)是非常可能的。看起来也像一个缓存问题。
我收到的错误消息是:
An internal error occurred during:
Install download0
Install download1
Install download2
Install download3
并在错误日志中:
java.lang.NullPointerException
at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.downloadArtifact(SimpleArtifactRepository.java:675)
at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.downloadArtifact(SimpleArtifactRepository.java:600)
at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getArtifact(SimpleArtifactRepository.java:732)
at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.getArtifact(MirrorRequest.java:319)
at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.transferSingle(MirrorRequest.java:288)
at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.transfer(MirrorRequest.java:223)
at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.perform(MirrorRequest.java:153)
at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getArtifact(SimpleArtifactRepository.java:716)
at org.eclipse.equinox.internal.p2.artifact.repository.simple.DownloadJob.run(DownloadJob.java:63)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)
一个不工作的目标平台的例子是(尽管我有理由确定它不能成为目标平台,因为它在 Neon 中工作):
<location includeAllPlatforms="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
<repository location="http://download.eclipse.org/eclipse/updates/4.7"/>
<unit id="org.eclipse.rcp.feature.group" version="4.7.2.v20171130-0510" />
</location>
我发现了两个错误,但有一个类似的例外:错误 506255谈论我可能使用的镜像更新站点?错误 379986可能并不真正相关,因为它与检查更新功能有关。
我删除了捆绑池文件夹(通过Preferences -> Oomph -> Bundle Pools找到)但问题仍然存在,这一次甚至是我第一次在全新的工作区中打开目标平台时。
我可以在 Tycho 中解析相同的目标平台(但我也可以使用 Eclipse Neon 来解决)。
我找到了一种方法来解决产生该错误的目标平台。假设我有一个包含 25 个位置的目标平台。我一个接一个地删除一个位置并尝试解析目标平台。实际上在 19 左右(这个数字可能是随机的,但它不绑定到特定位置)。然后我再一一添加位置。如果由于某些原因我一次将它们全部添加,它将不起作用。当我到达原始目标平台时,它现在可以解决。
如何在 Oxygen 中设置目标平台?
跟进:现在一小时数百个项目在 Jenkins 上构建时具有相同(或非常相似)的异常:
Caused by: java.lang.NullPointerException
at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.downloadArtifact(SimpleArtifactRepository.java:666)
at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.downloadArtifact(SimpleArtifactRepository.java:591)
at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getArtifact(SimpleArtifactRepository.java:723)
at org.eclipse.tycho.repository.p2base.artifact.repository.RepositoryArtifactProvider.getArtifactFromOneMirror(RepositoryArtifactProvider.java:229)
at org.eclipse.tycho.repository.p2base.artifact.repository.RepositoryArtifactProvider.getArtifactFromAnyMirror(RepositoryArtifactProvider.java:212)
at org.eclipse.tycho.repository.p2base.artifact.repository.RepositoryArtifactProvider.access$1(RepositoryArtifactProvider.java:207)
at org.eclipse.tycho.repository.p2base.artifact.repository.RepositoryArtifactProvider$1.perform(RepositoryArtifactProvider.java:187)
at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getArtifact(SimpleArtifactRepository.java:707)
at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getArtifacts(SimpleArtifactRepository.java:778)
at org.eclipse.tycho.repository.p2base.artifact.repository.RepositoryArtifactProvider.getArtifactFromAnyChildRepository(RepositoryArtifactProvider.java:199)
at org.eclipse.tycho.repository.p2base.artifact.repository.RepositoryArtifactProvider.getArtifactFromAnyFormatAvailableInRepository(RepositoryArtifactProvider.java:168)
at org.eclipse.tycho.repository.p2base.artifact.repository.RepositoryArtifactProvider.getArtifactFromAnySource(RepositoryArtifactProvider.java:154)