 +            os.unlink(f.name)
 +        f = NamedTemporaryFile(mode='wb', suffix='.txt', prefix ='java_src_path_', delete=False) #FML: We write to a temporary file just in case the command is to long
 +        for line in pkglist:
-+            f.write('%s\n' % os.path.abspath(line))
++            f.write('"%s"\n' % os.path.abspath(line))
 +        f.close()
 +        dirs = '@"%s"' % f.name
          classpath = os.pathsep.join(cplk[side])
          forkcmd = self.cmdrecomp.format(classpath=classpath, sourcepath=pathsrclk[side], outpath=pathbinlk[side],
                                          pkgs=dirs)
-@@ -1338,7 +1355,7 @@
+@@ -1336,9 +1353,10 @@
+             self.logger.error('==================')
+             self.logger.error('')
              raise
++        os.unlink(f.name)
  
      def startserver(self, mainclass, extraargs):
 -        classpath = [self.binserver] + self.cpathserver

             if entry[3] == 'U':
                 self.logger.info('Retrieving file from server : %s', entry[0])
                 cur_file = os.path.normpath(entry[0])
@@ -1910,6 +1933,9 @@
         md5reoblk = {CLIENT: self.md5reobfclient, SERVER: self.md5reobfserver}
         outpathlk = {CLIENT: self.srcmodclient, SERVER: self.srcmodserver}
         src = {CLIENT: self.srcclient, SERVER: self.srcserver}

         if not reobf:
             md5lk = {CLIENT: self.md5client, SERVER: self.md5server}
         else:
@@ -1718,6 +1736,9 @@
                     class_path = ''
                 else:
                     class_path += '/'
