mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-19 13:02:30 +07:00
[run configurations] properly propagate ExecutionException in ApplicationCommandLineState (EA-1209276)
'executeSynchronously' wraps exceptions thrown during the computation, so they should be unwrapped. GitOrigin-RevId: a3dddbd845b8a94b1c659085ff7e8c6e1bb88c28
This commit is contained in:
committed by
intellij-monorepo-bot
parent
c1d98069be
commit
30f67591c5
@@ -19,6 +19,7 @@ import com.intellij.openapi.projectRoots.ex.JavaSdkUtil;
|
||||
import com.intellij.psi.PsiCompiledElement;
|
||||
import com.intellij.psi.PsiJavaModule;
|
||||
import com.intellij.psi.impl.light.LightJavaModule;
|
||||
import com.intellij.util.ExceptionUtil;
|
||||
import org.jdom.Element;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -48,25 +49,36 @@ public abstract class ApplicationCommandLineState<T extends
|
||||
}
|
||||
|
||||
final JavaRunConfigurationModule module = myConfiguration.getConfigurationModule();
|
||||
ReadAction.nonBlocking((Callable<Void>)() -> {
|
||||
final String jreHome = getTargetEnvironmentRequest() == null && myConfiguration.isAlternativeJrePathEnabled() ? myConfiguration.getAlternativeJrePath() : null;
|
||||
if (module.getModule() != null) {
|
||||
DumbService.getInstance(module.getProject()).runWithAlternativeResolveEnabled(() -> {
|
||||
if (mainClass == null) {
|
||||
throw new CantRunException(ExecutionBundle.message("no.main.class.defined.error.message"));
|
||||
}
|
||||
int classPathType = JavaParametersUtil.getClasspathType(module, mainClass, false,
|
||||
isProvidedScopeIncluded());
|
||||
JavaParametersUtil.configureModule(module, params, classPathType, jreHome);
|
||||
});
|
||||
try {
|
||||
ReadAction.nonBlocking((Callable<Void>)() -> {
|
||||
final String jreHome = getTargetEnvironmentRequest() == null && myConfiguration.isAlternativeJrePathEnabled() ? myConfiguration.getAlternativeJrePath() : null;
|
||||
if (module.getModule() != null) {
|
||||
DumbService.getInstance(module.getProject()).runWithAlternativeResolveEnabled(() -> {
|
||||
if (mainClass == null) {
|
||||
throw new CantRunException(ExecutionBundle.message("no.main.class.defined.error.message"));
|
||||
}
|
||||
int classPathType = JavaParametersUtil.getClasspathType(module, mainClass, false,
|
||||
isProvidedScopeIncluded());
|
||||
JavaParametersUtil.configureModule(module, params, classPathType, jreHome);
|
||||
});
|
||||
}
|
||||
else {
|
||||
JavaParametersUtil.configureProject(module.getProject(), params, JavaParameters.JDK_AND_CLASSES_AND_TESTS, jreHome);
|
||||
}
|
||||
return null;
|
||||
})
|
||||
.expireWith(configuration.getProject())
|
||||
.executeSynchronously();
|
||||
}
|
||||
catch (Exception e) {
|
||||
ExecutionException executionException = ExceptionUtil.findCause(e, ExecutionException.class);
|
||||
if (executionException != null) {
|
||||
throw executionException;
|
||||
}
|
||||
else {
|
||||
JavaParametersUtil.configureProject(module.getProject(), params, JavaParameters.JDK_AND_CLASSES_AND_TESTS, jreHome);
|
||||
throw e;
|
||||
}
|
||||
return null;
|
||||
})
|
||||
.expireWith(configuration.getProject())
|
||||
.executeSynchronously();
|
||||
}
|
||||
|
||||
setupModulePath(params, module);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user