I am currently configuring my Eclipse IDE (2024-09, Windows OS) for a java course. It requires me to install several plugins (Checkstyle, SpotBugs, SubEclipse, Eclipse Web Developer Tools) but all of my tries get stuck at some random location in the process of installing. (Specifically, it shows that it is fetching something, as the images show) Some of the "fetching" processes are smooth, and then it gets stuck at one "fetching" process, different for each try, never switching to the next process.
I install through Help -> Install New Software... -> Add... (Name, Location from the Internet) -> Next> / Finish.
The issue may be because I did not trust all authorities. However, the installation process actually did not show me any page or choice to trust all. My Eclipse 2024-06 met the same problem when installing the plugins before, and I do not remember how I solved this problem. But now when I need to switch to Eclipse 2024-09 due to JUnit compatibility problems, I have the same problem.
I did not receive any error, just got stuck.
I have tried several times, selecting "Trust all content" in preferences but still fail to install any of the plugins.
The Installation Page (Options are default selected)
Stuck when installing CheckStyle
Another try, stuck when installing:
In a third try, it got stuck in another place:
When going to Preferences -> Install/Update -> Available Software Sites, it shows me the following:
This is the content of the "Error Log" view:
Eclipse log:
!SESSION 2024-11-15 14:47:07.473 -----------------------------------------------
eclipse.buildId=4.33.0.20240905-0613
java.version=21.0.4
java.vendor=Eclipse Adoptium
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=zh_CN
Framework arguments: -product org.eclipse.epp.package.java.product
Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product
!ENTRY ch.qos.logback.classic 1 0 2024-11-15 14:47:10.082
!MESSAGE Activated before the state location was initialized. Retry after the state location is initialized.
!ENTRY ch.qos.logback.classic 1 0 2024-11-15 14:47:11.196
!MESSAGE Logback config file: D:\Desktop\landepen\OSU-CSE-2221\workspace\.metadata\.plugins\org.eclipse.m2e.logback\logback.2.6.1.20240411-1122.xml
!ENTRY org.eclipse.egit.ui 2 0 2024-11-15 14:47:16.167
!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git
user global configuration and to define the default location to store repositories: 'C:\Users\123'. If this is
not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and
EGit might behave differently since they see different configuration options.
This warning can be switched off on the Team > Git > Confirmations and Warnings preference page.
!ENTRY org.eclipse.core.jobs 2 2 2024-11-15 14:52:13.623
!MESSAGE Job found still running after platform shutdown. Jobs should be canceled by the plugin that scheduled them during shutdown: org.eclipse.equinox.p2.operations.ProfileModificationJob RUNNING
at java.base/jdk.internal.misc.Unsafe.park(Native Method)
at java.base/java.util.concurrent.locks.LockSupport.park(LockSupport.java:221)
at java.base/java.util.concurrent.CompletableFuture$Signaller.block(CompletableFuture.java:1864)
at java.base/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:3780)
at java.base/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3725)
at java.base/java.util.concurrent.CompletableFuture.waitingGet(CompletableFuture.java:1898)
at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2072)
at org.eclipse.equinox.internal.p2.engine.phases.AuthorityChecker.lambda$10(AuthorityChecker.java:268)
at java.base/java.util.Optional.ifPresent(Optional.java:178)
at org.eclipse.equinox.internal.p2.engine.phases.AuthorityChecker.gatherCertificates(AuthorityChecker.java:266)
at org.eclipse.equinox.internal.p2.engine.phases.AuthorityChecker.getCertificates(AuthorityChecker.java:246)
at org.eclipse.equinox.internal.p2.engine.phases.AuthorityChecker.start(AuthorityChecker.java:125)
at org.eclipse.equinox.internal.p2.engine.phases.Collect.completePhase(Collect.java:97)
at org.eclipse.equinox.internal.p2.engine.Phase.postPerform(Phase.java:254)
at org.eclipse.equinox.internal.p2.engine.Phase.perform(Phase.java:105)
at org.eclipse.equinox.internal.p2.engine.PhaseSet.perform(PhaseSet.java:65)
at org.eclipse.equinox.internal.p2.engine.Engine.perform(Engine.java:95)
at org.eclipse.equinox.internal.p2.engine.Engine.perform(Engine.java:49)
at org.eclipse.equinox.p2.operations.ProvisioningSession.performProvisioningPlan(ProvisioningSession.java:175)
at org.eclipse.equinox.p2.operations.ProfileModificationJob.runModal(ProfileModificationJob.java:76)
at org.eclipse.equinox.p2.operations.ProvisioningJob.run(ProvisioningJob.java:187)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Here is some information that may be useful from jcmd:
"Worker-1: Installing Software" #74 [19812] prio=5 os_prio=0 cpu=468.75ms elapsed=452.35s tid=0x00000298917e9110 nid=19812 waiting on condition [0x000000a64083e000]
java.lang.Thread.State: WAITING (parking)
at jdk.internal.misc.Unsafe.park(java.base@21.0.4/Native Method)
- parking to wait for <0x00000000c7700090> (a java.util.concurrent.CompletableFuture$Signaller)
at java.util.concurrent.locks.LockSupport.park(java.base@21.0.4/LockSupport.java:221)
at java.util.concurrent.CompletableFuture$Signaller.block(java.base@21.0.4/CompletableFuture.java:1864)
at java.util.concurrent.ForkJoinPool.unmanagedBlock(java.base@21.0.4/ForkJoinPool.java:3780)
at java.util.concurrent.ForkJoinPool.managedBlock(java.base@21.0.4/ForkJoinPool.java:3725)
at java.util.concurrent.CompletableFuture.waitingGet(java.base@21.0.4/CompletableFuture.java:1898)
at java.util.concurrent.CompletableFuture.get(java.base@21.0.4/CompletableFuture.java:2072)
at org.eclipse.equinox.internal.p2.engine.phases.AuthorityChecker.lambda$10(AuthorityChecker.java:268)
at org.eclipse.equinox.internal.p2.engine.phases.AuthorityChecker$$Lambda/0x0000000100fb28b8.accept(Unknown Source)
at java.util.Optional.ifPresent(java.base@21.0.4/Optional.java:178)
at org.eclipse.equinox.internal.p2.engine.phases.AuthorityChecker.gatherCertificates(AuthorityChecker.java:266)
at org.eclipse.equinox.internal.p2.engine.phases.AuthorityChecker.getCertificates(AuthorityChecker.java:246)
at org.eclipse.equinox.internal.p2.engine.phases.AuthorityChecker.start(AuthorityChecker.java:125)
at org.eclipse.equinox.internal.p2.engine.phases.Collect.completePhase(Collect.java:97)
at org.eclipse.equinox.internal.p2.engine.Phase.postPerform(Phase.java:254)
at org.eclipse.equinox.internal.p2.engine.Phase.perform(Phase.java:105)
at org.eclipse.equinox.internal.p2.engine.PhaseSet.perform(PhaseSet.java:65)
at org.eclipse.equinox.internal.p2.engine.Engine.perform(Engine.java:95)
at org.eclipse.equinox.internal.p2.engine.Engine.perform(Engine.java:49)
at org.eclipse.equinox.p2.operations.ProvisioningSession.performProvisioningPlan(ProvisioningSession.java:175)
at org.eclipse.equinox.p2.operations.ProfileModificationJob.runModal(ProfileModificationJob.java:76)
at org.eclipse.equinox.p2.operations.ProvisioningJob.run(ProvisioningJob.java:187)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Eclipse sends a request to all configured authorities to find all (trusted) certificates. One of your trusted authorities seem to accept the connection but doesn't respond to it (or the connection gets stuck somewhere in the response). Since Eclipse doesn't have a timeout for collecting all the authority certificates, it waits for the response forever.
I have contributed a fix of this issue which got merged. It will probably be in the 2025-03 release. With this fix, it should stop trying to resolve the host certificate from the problematic server after it not working with 3 attempts (can be configured with the org.eclipse.equinox.p2.engine.certificateRequestRetries
property) each having a timeout of 5 seconds (can be configured using the org.eclipse.equinox.p2.engine.certificateRequestTimeout
property (in milliseconds)). So by default, it should continue after 15 seconds and ignore that authority. If you want it to be faster, you should be able to reduce these properties by editing your eclipse.ini
(add the following somewhere after -vmargs
):
-Dorg.eclipse.equinox.p2.engine.certificateRequestRetries=1
-Dorg.eclipse.equinox.p2.engine.certificateRequestTimeout=3000
In Window > Preferences > Install/Update > Trust, you can find a tab "Authorities". This tab lists all configured authorities.
It seems like one of them doesn't respond to the request so you would probably need to remove that from the authorities by clicking the "Remove" button after selecting the authority causing the issue. To find that authority, you can run curl --head https://your.authority
for all configured authority (obviously replacing the link). If you don't get a response, remove it from the list of authorities.