RunProfileState (@NotNull Executor executor, @NotNull ExecutionEnvironment environment) { final VirtualFile scriptFile = ScriptFileUtil.findScriptFileByPath(getScriptPath()); if (scriptFile == null) return null; final GroovyScriptRunner scriptRunner = getScriptRunner(); if (scriptRunner == null) return null; return new JavaCommandLineState(environment) { @NotNull @Override protected OSProcessHandler startProcess() throws ExecutionException { final OSProcessHandler handler = super.startProcess(); handler.setShouldDestroyProcessRecursively(true); if (scriptRunner.shouldRefreshAfterFinish()) { handler.addProcessListener(new ProcessAdapter() { @Override public void processTerminated(@NotNull ProcessEvent event) { if (!ApplicationManager.getApplication().isDisposed()) { VirtualFileManager.getInstance().asyncRefresh(); } } }); } return handler; } @Override protected JavaParameters createJavaParameters() throws ExecutionException { final Module module = getModule(); final boolean tests = ProjectRootManager.getInstance(getProject()).getFileIndex().isInTestSourceContent(scriptFile); String jrePath = isAlternativeJrePathEnabled() ? getAlternativeJrePath() : null; JavaParameters params = new JavaParameters(); params.setUseClasspathJar(true); params.setDefaultCharset(getProject()); params.setJdk( module == null ? JavaParametersUtil.createProjectJdk(getProject(), jrePath) : JavaParametersUtil.createModuleJdk(module, !tests, jrePath) ); configureConfiguration(params, new CommonProgramRunConfigurationParametersDelegate(GroovyScriptRunConfiguration.this) { @Nullable @Override public String getProgramParameters() { return null; } }); scriptRunner.configureCommandLine(params, module, tests, scriptFile, GroovyScriptRunConfiguration.this); return params; } }; }