String (@NotNull Class<? extends ExternalApp> mainClass, boolean useBatchFile) { Set<File> jarPaths = new LinkedHashSet<>(); addClasses(jarPaths, mainClass); addClasses(jarPaths, ExternalApp.class); @NonNls StringBuilder cmd = new StringBuilder(); cmd.append('"'); cmd.append(getJavaExecutablePath()); cmd.append('"'); cmd.append(" -cp "); cmd.append('"'); String classpathSeparator = String.valueOf(File.pathSeparatorChar); cmd.append(StringUtil.join(jarPaths, file -> file.getPath(), classpathSeparator)); cmd.append('"'); cmd.append(' '); cmd.append(mainClass.getName()); for (String p : myInternalParameters) { cmd.append(' '); cmd.append(p); } String line = cmd.toString(); if (SystemInfo.isWindows) { line = line.replace('\\', '/'); } return line; }