From a0c6219ed86de7cc6bd70407c24779fcb0988ad2 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Fri, 21 Oct 2016 19:29:18 +0200 Subject: [PATCH] [java] no module path on non-modular JDK --- .../application/ApplicationConfiguration.java | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfiguration.java b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfiguration.java index 4b228138a5d4..8f4e8adcf57d 100644 --- a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfiguration.java +++ b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfiguration.java @@ -30,6 +30,8 @@ import com.intellij.openapi.module.Module; import com.intellij.openapi.options.SettingsEditor; import com.intellij.openapi.options.SettingsEditorGroup; import com.intellij.openapi.project.Project; +import com.intellij.openapi.projectRoots.JavaSdk; +import com.intellij.openapi.projectRoots.JavaSdkVersion; import com.intellij.openapi.util.DefaultJDOMExternalizer; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.WriteExternalException; @@ -45,6 +47,9 @@ import org.jetbrains.annotations.Nullable; import java.util.Collection; import java.util.LinkedHashMap; import java.util.Map; +import java.util.Optional; + +import static com.intellij.openapi.util.Pair.pair; public class ApplicationConfiguration extends ModuleBasedConfiguration implements CommonJavaRunConfigurationParameters, SingleClassConfiguration, RefactoringListenerProvider { @@ -281,12 +286,18 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration pair(jdk.getSdkType(), jdk)) + .map(p -> p.first instanceof JavaSdk ? ((JavaSdk)p.first).getVersion(p.second) : null) + .orElse(null); + if (version != null && version.isAtLeast(JavaSdkVersion.JDK_1_9)) { + PsiClass mainClass = module.findClass(params.getMainClass()); + if (mainClass != null) { + PsiJavaModule mainModule = JavaModuleGraphUtil.findDescriptorByElement(mainClass); + if (mainModule != null) { + params.setModuleName(mainModule.getModuleName()); + params.getModulePath().addAll(params.getClassPath().getPathList()); + } } } }