public JobSubmissionResult run(JobWithJars jobWithJars, int parallelism, SavepointRestoreSettings savepointSettings)
			throws CompilerException, ProgramInvocationException {
		ClassLoader classLoader = jobWithJars.getUserCodeClassLoader();
		if (classLoader == null) {
			throw new IllegalArgumentException("The given JobWithJars does not provide a usercode class loader.");
		}

		OptimizedPlan optPlan = getOptimizedPlan(compiler, jobWithJars, parallelism);
		return run(optPlan, jobWithJars.getJarFiles(), jobWithJars.getClasspaths(), classLoader, savepointSettings);
	}
public JobSubmissionResult run ( JobWithJars jobWithJars , int parallelism , SavepointRestoreSettings savepointSettings ) throws CompilerException , ProgramInvocationException { ClassLoader classLoader = jobWithJars . getUserCodeClassLoader ( ) ; if ( classLoader == null ) { throw new IllegalArgumentException ( "The given JobWithJars does not provide a usercode class loader." ) ; } OptimizedPlan optPlan = getOptimizedPlan ( compiler , jobWithJars , parallelism ) ; return run ( optPlan , jobWithJars . getJarFiles ( ) , jobWithJars . getClasspaths ( ) , classLoader , savepointSettings ) ; }
Runs a program on the Flink cluster to which this client is connected. The call blocks until the
execution is complete, and returns afterwards.

@param jobWithJars The program to be executed.
@param parallelism The default parallelism to use when running the program. The default parallelism is used
when the program does not set a parallelism by itself.

@throws CompilerException Thrown, if the compiler encounters an illegal situation.
@throws ProgramInvocationException Thrown, if the program could not be instantiated from its jar file,
or if the submission failed. That might be either due to an I/O problem,
i.e. the job-manager is unreachable, or due to the fact that the
parallel execution failed.