import com.intellij.util.execution.ParametersListUtil; //导入方法依赖的package包/类
private static void setClasspathJarParams(GeneralCommandLine commandLine,
OwnSimpleJavaParameters javaParameters,
ParametersList vmParameters,
Class commandLineWrapper,
boolean dynamicVMOptions,
boolean dynamicParameters) throws CantRunException
{
try
{
Manifest manifest = new Manifest();
manifest.getMainAttributes().putValue("Created-By", ApplicationNamesInfo.getInstance().getFullProductName());
String manifestText = "";
if(dynamicVMOptions)
{
List properties = new ArrayList<>();
for(String param : vmParameters.getList())
{
if(isUserDefinedProperty(param))
{
properties.add(param);
}
else
{
commandLine.addParameter(param);
}
}
manifest.getMainAttributes().putValue("VM-Options", ParametersListUtil.join(properties));
manifestText += "VM-Options: " + ParametersListUtil.join(properties) + "\n";
}
else
{
commandLine.addParameters(vmParameters.getList());
}
appendEncoding(javaParameters, commandLine, vmParameters);
if(dynamicParameters)
{
manifest.getMainAttributes().putValue("Program-Parameters", ParametersListUtil.join(javaParameters.getProgramParametersList().getList()));
manifestText += "Program-Parameters: " + ParametersListUtil.join(javaParameters.getProgramParametersList().getList()) + "\n";
}
boolean notEscape = vmParameters.hasParameter(PROPERTY_DO_NOT_ESCAPE_CLASSPATH_URL);
PathsList path = javaParameters.getClassPath();
File classpathJarFile = CommandLineWrapperUtil.createClasspathJarFile(manifest, path.getPathList(), notEscape);
String jarFilePath = classpathJarFile.getAbsolutePath();
commandLine.addParameter("-classpath");
if(dynamicVMOptions || dynamicParameters)
{
commandLine.addParameter(PathUtil.getJarPathForClass(commandLineWrapper) + File.pathSeparator + jarFilePath);
commandLine.addParameter(commandLineWrapper.getName());
}
commandLine.addParameter(jarFilePath);
commandLine.putUserData(COMMAND_LINE_CONTENT, ContainerUtil.stringMap(jarFilePath, manifestText + "Class-Path: " + path.getPathsString()));
OSProcessHandler.deleteFileOnTermination(commandLine, classpathJarFile);
}
catch(IOException e)
{
throwUnableToCreateTempFile(e);
}
}