code: private void writeRequiredJarFiles(final DataOutput out, final AbstractJobVertex[] jobVertices) throws IOException {
  
  		// Now check if all the collected jar files really exist
  		final FileSystem fs = FileSystem.getLocalFileSystem();
  
  		for (int i = 0; i < this.userJars.size(); i++) {
  			if (!fs.exists(this.userJars.get(i))) {
  				throw new IOException("Cannot find jar file " + this.userJars.get(i));
  			}
  		}
  
  		// How many jar files follow?
  		out.writeInt(this.userJars.size());
  
  		for (int i = 0; i < this.userJars.size(); i++) {
  
  			final Path jar = this.userJars.get(i);
  
  			// Write out the actual path
  			jar.write(out);
  
  			// Write out the length of the file
  			final FileStatus file = fs.getFileStatus(jar);
  			out.writeLong(file.getLen());
  
  			// Now write the jar file
  			final FSDataInputStream inStream = fs.open(this.userJars.get(i));
  			final byte[] buf = new byte[BUFFERSIZE];
  			int read = inStream.read(buf, 0, buf.length);
  			while (read > 0) {
  				out.write(buf, 0, read);
  				read = inStream.read(buf, 0, buf.length);
  			}
  		}
  	}
docs: Writes the JAR files of all vertices in array <code>jobVertices</code> to the specified output stream.
  
  @param out
  the output stream to write the JAR files to
  @param jobVertices
  array of job vertices whose required JAR file are to be written to the output stream
  @throws IOException
  thrown if an error occurs while writing to the stream