Preconfigure JDK before getting java executable #562
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently, importing any sbt project would fail when there is no JDK defined within IntelliJ. This can happen for example if someone installs it for the first time and does not configure the JDK manually.
Why does this happen?
Previously, there was a
DefaultJdkConfigurator
application component which tried to preconfigure a JDK during IDE startup. In this commit, the component was removed and theProjectJdkTable::preconfigure
method was introduced. This method is actually being invoked automatically inProjectSdksModel
during the project import, but it happens much later than theSbtExternalSystemManager
needs the JDK.How does the PR work?
It preconfigures the JDK just before the JDK is needed. The operation is idempotent, so there is no worry that it will affect subsequent import operations.
Why is there no tests to cover this case?
Sadly, the
preconfigure
method is ignored in unit test mode. We are currently monitoring this behavior within our own scala test suite which is interacting with an actual IDE and not its unit test mode. In fact, that is how we found this issue.