尝试更新Eclipse时出错

时间:2012-09-29 10:30:40

标签: java eclipse updates

我在尝试更新Eclipse时遇到错误!

这是错误日志 在“安装下载0”

期间发生内部错误
  

java.lang.IllegalArgumentException:比较方法违反了其一般合同!       在java.util.ComparableTimSort.mergeHi(ComparableTimSort.java:835)       at java.util.ComparableTimSort.mergeAt(ComparableTimSort.java:453)       at java.util.ComparableTimSort.mergeForceCollapse(ComparableTimSort.java:392)       在java.util.ComparableTimSort.sort(ComparableTimSort.java:191)       在java.util.ComparableTimSort.sort(ComparableTimSort.java:146)       在java.util.Arrays.sort(Arrays.java:472)       at org.eclipse.equinox.internal.p2.artifact.repository.MirrorSelector.hasValidMirror(MirrorSelector.java:319)       at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.downloadArtifact(SimpleArtifactRepository.java:577)       at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getArtifact(SimpleArtifactRepository.java:680)       at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.getArtifact(MirrorRequest.java:260)       在org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.transferSingle(MirrorRequest.java:235)       at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.transfer(MirrorRequest.java:191)       在org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.perform(MirrorRequest.java:122)       at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getArtifact(SimpleArtifactRepository.java:664)       at org.eclipse.equinox.internal.p2.artifact.repository.simple.DownloadJob.run(DownloadJob.java:63)       在org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

有人知道如何解决这个问题吗?

由于

1 个答案:

答案 0 :(得分:4)

之前发生过这种情况,现在我有Eclipse Juno Release,我没有遇到过这样的问题。

可能的解决方法
出现此错误的原因是,当与JDK> = 1.7一起使用时,Eclipse中存在一个小错误 要解决它,您可以用JDK 1.6替换JDK 1.7(当然更改环境变量,PATH等)
(OR)
退出/关闭所有Active Eclipse IDE窗口,进程,...
然后打开Eclipse Installation文件夹并检查“eclipse.ini”文件 您可能会看到在启动期间启动Eclipse IDE所需的一些配置条目 现在复制粘贴“eclipse.ini”文件中“-vmargs”下面的(系统属性)条目:

-Djava.util.Arrays.useLegacyMergeSort=true

保存!
现在打开Eclipse并执行更新,它应该正常完成 然后您可以从“eclipse.ini”配置文件中删除Line。

我希望即使使用JDK 1.7,你也不会在Eclipse Juno Release中遇到任何这样的错误。

问题的可能根本原因:JDK 1.7中的 TimSort 算法

参考:https://bugs.eclipse.org/bugs/show_bug.cgi?id=317785