private static void appendParamsEncodingClasspath(
     SimpleJavaParameters javaParameters,
     GeneralCommandLine commandLine,
     ParametersList parametersList) {
   commandLine.addParameters(parametersList.getList());
   appendEncoding(javaParameters, commandLine, parametersList);
   if (!parametersList.hasParameter("-classpath")
       && !parametersList.hasParameter("-cp")
       && !javaParameters.getClassPath().getPathList().isEmpty()) {
     commandLine.addParameter("-classpath");
     commandLine.addParameter(javaParameters.getClassPath().getPathsString());
   }
 }
  public static GeneralCommandLine setupJVMCommandLine(
      final String exePath,
      final SimpleJavaParameters javaParameters,
      final boolean forceDynamicClasspath) {
    final GeneralCommandLine commandLine = new GeneralCommandLine();
    commandLine.setExePath(exePath);

    final ParametersList vmParametersList = javaParameters.getVMParametersList();
    commandLine.getEnvironment().putAll(javaParameters.getEnv());
    commandLine.setPassParentEnvironment(javaParameters.isPassParentEnvs());

    appendParamsEncodingClasspath(javaParameters, commandLine, vmParametersList);

    final String mainClass = javaParameters.getMainClass();
    String jarPath = javaParameters.getJarPath();
    if (mainClass != null) {
      commandLine.addParameter(mainClass);
    } else if (jarPath != null) {
      commandLine.addParameter("-jar");
      commandLine.addParameter(jarPath);
    }

    commandLine.addParameters(javaParameters.getProgramParametersList().getList());

    commandLine.withWorkDirectory(javaParameters.getWorkingDirectory());

    log.debug("starting process with commandLine: " + commandLine.getCommandLineString());

    return commandLine;
  }
 private static void appendEncoding(
     SimpleJavaParameters javaParameters,
     GeneralCommandLine commandLine,
     ParametersList parametersList) {
   // Value of file.encoding and charset of GeneralCommandLine should be in sync in order process's
   // input and output be correctly handled.
   String encoding = parametersList.getPropertyValue("file.encoding");
   if (encoding == null) {
     Charset charset = javaParameters.getCharset();
     if (charset == null) charset = EncodingManager.getInstance().getDefaultCharset();
     commandLine.addParameter("-Dfile.encoding=" + charset.name());
     commandLine.withCharset(charset);
   } else {
     try {
       Charset charset = Charset.forName(encoding);
       commandLine.withCharset(charset);
     } catch (UnsupportedCharsetException ignore) {
     } catch (IllegalCharsetNameException ignore) {
     }
   }
 }