{"record":{"id":"1e8a6cd3a794b748","repo":"JetBrains/intellij-community","slug":"ide-doesn-t-support-starting-java-processes-using","errorCode":null,"errorMessage":"IDE doesn't support starting Java processes using Java {0}, the minimum supported version is Java 8. To solve this, either: \n * Change the run configuration to use a newer Java version. \n * Set the `idea.no.launcher` custom property to `true` to disable the IntelliJ launcher (additional features like `soft exit` will stop working).","messagePattern":"IDE doesn't support starting Java processes using Java (.+?), the minimum supported version is Java 8\\. To solve this, either: \n \\* Change the run configuration to use a newer Java version\\. \n \\* Set the `idea\\.no\\.launcher` custom property to `true` to disable the IntelliJ launcher \\(additional features like `soft exit` will stop working\\)\\.","errorType":"exception","errorClass":"ExecutionException","httpStatus":null,"severity":"error","filePath":"java/execution/impl/src/com/intellij/execution/runners/ProcessProxyFactoryImpl.java","lineNumber":39,"sourceCode":"public final class ProcessProxyFactoryImpl extends ProcessProxyFactory {\n  private static final boolean ourMayUseLauncher = !Boolean.getBoolean(\"idea.no.launcher\");\n\n  @Override\n  public ProcessProxy createCommandLineProxy(JavaCommandLine javaCmdLine) throws ExecutionException {\n    JavaParameters javaParameters = javaCmdLine.getJavaParameters();\n    String mainClass = javaParameters.getMainClass();\n\n    if (ourMayUseLauncher && mainClass != null) {\n      var rtJarPath = Path.of(JavaSdkUtil.getIdeaRtJarPath());\n      var runtimeJarFile = Files.isRegularFile(rtJarPath) && rtJarPath.startsWith(PathManager.getHomePath());\n\n      if (runtimeJarFile || javaParameters.getModuleName() == null) {\n        try {\n          ProcessProxyImpl proxy = new ProcessProxyImpl(StringUtil.getShortName(mainClass));\n          String port = String.valueOf(proxy.getPortNumber());\n          JavaSdkVersion jdkVersion = JavaSdkVersionUtil.getJavaSdkVersion(javaParameters.getJdk());\n          if (jdkVersion != null && !jdkVersion.isAtLeast(JavaSdkVersion.JDK_1_8)) {\n            throw new ExecutionException(JavaBundle.message(\"error.message.ide.does.not.support.starting.processes.using.old.java.app\",\n                                                            jdkVersion.getDescription()));\n          }\n\n          if (runtimeJarFile) {\n            javaParameters.getVMParametersList().add(\"-javaagent:\" + rtJarPath + '=' + port);\n          }\n          else {\n            JavaSdkUtil.addRtJar(javaParameters.getClassPath());\n\n            ParametersList vmParametersList = javaParameters.getVMParametersList();\n            vmParametersList.defineProperty(AppMainV2.LAUNCHER_PORT_NUMBER, port);\n\n            boolean isJava21preview = JavaSdkVersion.JDK_21.equals(jdkVersion) &&\n                                      javaParameters.getVMParametersList().getParameters().contains(JavaParameters.JAVA_ENABLE_PREVIEW_PROPERTY);\n            if (isJava21preview) {\n              vmParametersList.defineProperty(AppMainV2.LAUNCHER_USE_JDK_21_PREVIEW, Boolean.toString(isJava21preview));\n            }\n","sourceCodeStart":21,"sourceCodeEnd":57,"githubUrl":"https://github.com/JetBrains/intellij-community/blob/be881553f2a76ac8b4ea53950d93f0de78295c19/java/execution/impl/src/com/intellij/execution/runners/ProcessProxyFactoryImpl.java#L21-L57","documentation":"ProcessProxyFactoryImpl.createCommandLineProxy creates the IDE's process proxy (used for terminate/soft-exit support) by attaching idea_rt.jar as a -javaagent or launcher port. Before doing so it resolves the JDK version of the run configuration; if it is older than Java 8 (JavaSdkVersion.JDK_1_8), it throws ExecutionException, because the launcher mechanism (and the agent/launcher port protocol) requires Java 8+.","triggerScenarios":"A run configuration whose resolved JDK (project SDK, module SDK, or alternative JRE) is Java 7 or older (e.g. 1.6/1.7) while the IDE tries to install the process proxy. Triggered on Run/Debug of any Java process with such a JDK.","commonSituations":"Legacy projects pinned to JDK 6/7; alternative JRE path pointing to an old JDK; CI or containers with only an old IBM/Sun JVM; newer IDEA versions that dropped Java <8 for their tooling.","solutions":["Set the run configuration / project SDK to Java 8 or newer (the application itself does not have to run on 8 — the launcher does)","Or set the custom property -Didea.no.launcher=true in idea.properties / Help | Edit Custom Properties to disable the IDE launcher (at the cost of losing soft-exit and reliable termination features, as the message states)","If using 'Alternative JRE' in the run config, point it to a JDK >= 8"],"exampleFix":"# before: project SDK = 1.7\n# after: File | Project Structure | SDKs -> add JDK 8+ and select it (or add idea.no.launcher=true to idea.properties)","handlingStrategy":"validation","validationCode":"// before running, verify the resolved JDK meets the launcher minimum\nJavaSdkVersion v = JavaSdkVersionUtil.getJavaSdkVersion(javaParameters.getJdk());\nif (v != null && !v.isAtLeast(JavaSdkVersion.JDK_1_8)) {\n  return error(\"Set a JDK >= 8 or enable -Didea.no.launcher=true\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  ProcessProxyFactory.getInstance().createCommandLineProxy(state);\n} catch (ExecutionException e) {\n  // old JDK: bump SDK or set idea.no.launcher=true and inform user of trade-offs\n}","preventionTips":["Default project/module SDKs to Java 8+ even if you compile with -source/-target 6/7","Add idea.no.launcher=true to shared idea.properties for legacy-JDK pipelines (documenting lost soft-exit)","Audit 'Alternative JRE' paths after JDK upgrades"],"tags":["execution","jdk-version","java-8","launcher","process-proxy"],"backgroundTag":null,"analyzedSha":"be881553f2a76ac8b4ea53950d93f0de78295c19","analyzedAt":"2026-08-14T14:13:06.425Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}