简体   繁体   English

尝试更新Eclipse时出错

[英]Error when trying to update Eclipse

I got an error when trying to update my Eclipse! 尝试更新Eclipse时出现错误!

Here is the error log An internal error occurred during: "Install download 0" 这是错误日志在以下过程中发生内部错误:“安装下载0”

java.lang.IllegalArgumentException: Comparison method violates its general contract! java.lang.IllegalArgumentException:比较方法违反了它的常规约定! at java.util.ComparableTimSort.mergeHi(ComparableTimSort.java:835) at java.util.ComparableTimSort.mergeAt(ComparableTimSort.java:453) at java.util.ComparableTimSort.mergeForceCollapse(ComparableTimSort.java:392) at java.util.ComparableTimSort.sort(ComparableTimSort.java:191) at java.util.ComparableTimSort.sort(ComparableTimSort.java:146) at 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) at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.transferSingle(MirrorRequest.java:235) at org.eclipse.equinox 在java.util.ComparableTimSort.mergeHi(ComparableTimSort.java:835)在java.util.ComparableTimSort.mergeAt(ComparableTimSort.java:453)在java.util.ComparableTimSort.mergeForceCollapse(ComparableTimSort.java:392)在java.util。 org.eclipse.equinox.internal.p2处的java.util.Arrays.sort(Arrays.java:472)处的java.util.ComparableTimSort.sort(ComparableTimSort.java:146)处的ComparableTimSort.sort(ComparableTimSort.java:191) .artifact.repository.MirrorSelector.hasValidMirror(MirrorSelector.java:319)位于org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.downloadArtifact(SimpleArtifactRepository.java:577)位于org.eclipse.equinox.internal org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.getArtifact(MirrorRequest.java:260)上的.p2.artifact.repository.simple.SimpleArtifactRepository.getArtifact(SimpleArtifactRepository.java:680)在org.eclipse.equinox org.eclipse.equinox上的.internal.p2.artifact.repository.MirrorRequest.transferSingle(MirrorRequest.java:235) .internal.p2.artifact.repository.MirrorRequest.transfer(MirrorRequest.java:191) at 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) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) org.eclipse.equinox上的.internal.p2.artifact.repository.MirrorRequest.transfer(MirrorRequest.java:191)在org.eclipse.equinox上的.internal.p2.artifact.repository.MirrorRequest.perform(MirrorRequest.java:122) org.eclipse.equinox.internal.p2.artifact.repository.simple.DownloadJob.run(DownloadJob.java:63)上的.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getArtifact(SimpleArtifactRepository.java:664)在org .eclipse.core.internal.jobs.Worker.run(Worker.java:54)

Does any one know how to solve this problem? 有谁知道如何解决这个问题?

Thanks 谢谢

This happened to me before and now i have Eclipse Juno Release and I don't come across such issues. 我以前发生过这种情况,现在有了Eclipse Juno Release,并且没有遇到此类问题。

Possible Workarounds : 可能的解决方法
This error occurs because of a small bug in Eclipse when used with JDK >= 1.7 发生此错误是由于与JDK> = 1.7一起使用时Eclipse中的一个小错误。
To resolve it, you can replace the JDK 1.7 by JDK 1.6 (Of-course changing the Environment variables, PATH, and such) 要解决此问题,可以用JDK 1.6替换JDK 1.7(当然可以更改环境变量,PATH等)。
(OR) (要么)
Exit/Close any Active Eclipse IDE Window, Process,... 退出/关闭任何活动的Eclipse IDE窗口,进程,...
Then open the Eclipse Installation folder and examine the "eclipse.ini" file. 然后打开Eclipse Installation文件夹并检查“ eclipse.ini”文件。
You might see some configuration entries that are required to initiate Eclipse IDE during startup 您可能会看到启动期间启动Eclipse IDE所需的一些配置条目
Now copy paste the (system property)entry below "-vmargs" in "eclipse.ini" file: 现在,将(系统属性)项复制粘贴到“ eclipse.ini”文件中的“ -vmargs”下面:

-Djava.util.Arrays.useLegacyMergeSort=true

Save it! 保存!
Now Open Eclipse and Perform Update and it should complete Normally. 现在,打开Eclipse并执行更新,它应该正常完成。
Then You can remove the Line from the "eclipse.ini" configuration file. 然后,您可以从“ eclipse.ini”配置文件中删除该行。

I hope you won't get any such bugs in Eclipse Juno Release even with JDK 1.7. 我希望即使使用JDK 1.7,您也不会在Eclipse Juno Release中得到任何此类错误。

Possible Root cause of the Problem: TimSort algorithm in JDK 1.7 问题的可能根本原因:JDK 1.7中的TimSort算法

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM