From 4de7936f628a7eafab5f174f0ed96cdb472ac22a Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Thu, 16 Feb 2017 15:13:30 +0100 Subject: [PATCH] [java] skips AppMain on modular run configurations when agent is not available --- .../runners/ProcessProxyFactoryImpl.java | 45 ++++++++++--------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/java/execution/impl/src/com/intellij/execution/runners/ProcessProxyFactoryImpl.java b/java/execution/impl/src/com/intellij/execution/runners/ProcessProxyFactoryImpl.java index 90bb2285172f..3c20ed4167dd 100644 --- a/java/execution/impl/src/com/intellij/execution/runners/ProcessProxyFactoryImpl.java +++ b/java/execution/impl/src/com/intellij/execution/runners/ProcessProxyFactoryImpl.java @@ -38,31 +38,34 @@ public class ProcessProxyFactoryImpl extends ProcessProxyFactory { String mainClass = javaParameters.getMainClass(); if (ourMayUseLauncher && mainClass != null) { - try { - ProcessProxyImpl proxy = new ProcessProxyImpl(StringUtil.getShortName(mainClass)); + String rtJarPath = JavaSdkUtil.getIdeaRtJarPath(); + boolean runtimeJarFile = new File(rtJarPath).isFile(); - String rtJarPath = JavaSdkUtil.getIdeaRtJarPath(); - String port = String.valueOf(proxy.getPortNumber()); - String binPath = PathManager.getBinPath(); + if (runtimeJarFile || javaParameters.getModuleName() == null) { + try { + ProcessProxyImpl proxy = new ProcessProxyImpl(StringUtil.getShortName(mainClass)); + String port = String.valueOf(proxy.getPortNumber()); + String binPath = PathManager.getBinPath(); - if (new File(rtJarPath).isFile() && JavaSdkUtil.isJdkAtLeast(javaParameters.getJdk(), JavaSdkVersion.JDK_1_5)) { - javaParameters.getVMParametersList().add("-javaagent:" + rtJarPath + '=' + port + ':' + binPath); + if (runtimeJarFile && JavaSdkUtil.isJdkAtLeast(javaParameters.getJdk(), JavaSdkVersion.JDK_1_5)) { + javaParameters.getVMParametersList().add("-javaagent:" + rtJarPath + '=' + port + ':' + binPath); + } + else { + JavaSdkUtil.addRtJar(javaParameters.getClassPath()); + + ParametersList vmParametersList = javaParameters.getVMParametersList(); + vmParametersList.defineProperty(AppMainV2.LAUNCHER_PORT_NUMBER, port); + vmParametersList.defineProperty(AppMainV2.LAUNCHER_BIN_PATH, binPath); + + javaParameters.getProgramParametersList().prepend(mainClass); + javaParameters.setMainClass(AppMainV2.class.getName()); + } + + return proxy; } - else { - JavaSdkUtil.addRtJar(javaParameters.getClassPath()); - - ParametersList vmParametersList = javaParameters.getVMParametersList(); - vmParametersList.defineProperty(AppMainV2.LAUNCHER_PORT_NUMBER, port); - vmParametersList.defineProperty(AppMainV2.LAUNCHER_BIN_PATH, binPath); - - javaParameters.getProgramParametersList().prepend(mainClass); - javaParameters.setMainClass(AppMainV2.class.getName()); + catch (Exception e) { + Logger.getInstance(ProcessProxy.class).warn(e); } - - return proxy; - } - catch (Exception e) { - Logger.getInstance(ProcessProxy.class).warn(e); } }