JavaPatchableProgramRunner.execute() final in 2020.1


The JavaPatchableProgramRunner.execute() method has been updated to be final in 2020.1. Why is this? I have run configurations for a couple of build systems which require a sometimes lengthy project resolve in order to calculate the classpath etc. In cases where this took a long time (e.g. the user has snapshot repositories configured or something) this would lock the IDE up for long periods of time because the execute() process is executed on the EDT. I handled this by creating Runners which extend DefaultJavaProgramRunner and GenericDebuggerRunner and handle my run config types. When execute() is called on these runners I start a task on a pooled thread which calculates the run config parameters, and when that's done I call the superclass execute() on the EDT. This strategy no longer works in 2020.1. Is there a reason that this method is now final? Is there a better way to handle this case?

1 comment

Just use `ProgramRunner` directly. `JavaPatchableProgramRunner` doesn't add any value anymore.


Please sign in to leave a comment.