Buggy code:
mode = Default ; continue ; } if ( mode == InsideSource ) { if ( currentArg . equals ( "1.3" ) ) { options . put ( CompilerOptions . OPTION_Source , CompilerOptions . VERSION_1_3 ) ; } else if ( currentArg . equals ( "1.4" ) ) { options . put ( CompilerOptions . OPTION_Source , CompilerOptions . VERSION_1_4 ) ; } else { throw new InvalidInputException ( Main . bind ( "configure.source" , currentArg ) ) ; } mode = Default ; continue ; } if ( mode == InsideDestinationPath ) { destinationPath = currentArg ; mode = Default ; continue ; } if ( mode == InsideClasspath ) { StringTokenizer tokenizer = new StringTokenizer ( currentArg , File . pathSeparator ) ; while ( tokenizer . hasMoreTokens ( ) ) { int length ; if ( ( length = classpaths . length ) <= pathCount ) { System . arraycopy ( classpaths , 0 , ( classpaths = new String [ length * 2 ] ) , 0 , length ) ; } classpaths [ ( pathCount ++ ) ] = tokenizer . nextToken ( ) ; } mode = Default ; continue ; } currentArg = currentArg . replace ( '//' , File . separatorChar ) ; if ( currentArg . endsWith ( File . separator ) ) currentArg = currentArg . substring ( 0 , ( ( currentArg . length ( ) ) - ( File . separator . length ( ) ) ) ) ; File dir = new File ( currentArg ) ; if ( ! ( dir . isDirectory ( ) ) ) throw new InvalidInputException ( Main . bind ( "configure.directoryNotExist" , currentArg ) ) ; FileFinder finder = new FileFinder ( ) ; try { finder . find ( dir , ".JAVA" , verbose ) ; } catch ( Exception e ) { throw new InvalidInputException ( Main . bind ( "configure.IOError" , currentArg ) ) ; } if ( ( filenames ) != null ) { String [ ] results = finder . resultFiles ; int length = results . length ; System . arraycopy ( filenames , 0 , ( filenames = new String [ length + filesCount ] ) , 0 , filesCount ) ; System . arraycopy ( results , 0 , filenames , filesCount , length ) ; filesCount += length ; } else { filenames = finder . resultFiles ; filesCount = filenames . length ; } mode = Default ; continue ; } if ( noWarn ) { Object [ ] entries = options . entrySet ( ) . toArray ( ) ; for ( int i = 0 , max = entries . length ; i < max ; i ++ ) { Map . Entry entry = ( ( Map . Entry ) ( entries [ i ] ) ) ; if ( ! ( ( entry . getKey ( ) ) instanceof String ) ) continue ; if ( ! ( ( entry . getValue ( ) ) instanceof String ) ) continue ; if ( ( ( String ) ( entry . getValue ( ) ) ) . equals ( CompilerOptions . WARNING ) ) { options . put ( ( ( String ) ( entry . getKey ( ) ) ) , CompilerOptions . IGNORE ) ; } } } if ( versionIDRequired ) { out . println ( Main . bind ( "configure.version" , Main . bind ( "compiler.version" ) ) ) ; out . println ( ) ; proceed = false ; return ; } if ( printUsageRequired ) { printUsage ( ) ; proceed = false ; return ; } if ( filesCount != 0 ) System . arraycopy ( filenames , 0 , ( filenames = new String [ filesCount ] ) , 0 , filesCount ) ; if ( pathCount == 0 ) { <START_BUG> String classProp = System . getProperty ( "LFclasspath" ) ; <END_BUG> if ( ( classProp == null ) || ( ( classProp . length ( ) ) == 0 ) ) { out . println ( Main . bind ( "configure.noClasspath" ) ) ; classProp = "." ; } StringTokenizer tokenizer = new StringTokenizer ( classProp , File . pathSeparator ) ; classpaths = new String [ tokenizer . countTokens ( ) ] ; while ( tokenizer . hasMoreTokens ( ) ) { classpaths [ ( pathCount ++ ) ] = tokenizer . nextToken ( ) ; } } if ( ( classpaths ) == null ) classpaths = new String [ 0 ] ; System . arraycopy ( classpaths , 0 , ( classpaths = new String [ pathCount ] ) , 0 , pathCount ) ; for ( int i = 0 , max = classpaths . length ; i < max ; i ++ ) { File file = new File ( classpaths [ i ] ) ; if ( ! ( file . exists ( ) ) ) throw new InvalidInputException ( Main . bind ( "configure.incorrectClasspath" , classpaths [ i ] ) ) ; } if ( ( destinationPath ) == null ) { destinationPath = System . getProperty ( "user.dir" ) ; } else if ( "none" . equals ( destinationPath ) ) { destinationPath = null ; } if ( ( filenames ) == null ) throw new InvalidInputException ( Main . bind ( "configure.noSource" ) ) ; if ( ( log ) != null ) { try { out = new PrintWriter ( new FileOutputStream ( log , false ) ) ; } catch ( IOException e ) { throw new InvalidInputException ( Main . bind ( "configure.cannotOpenLog" ) ) ; } } else { showProgress = false ; } if ( ( repetitions ) == 0 ) { repetitions = 1 ; } } protected Map getOptions ( ) { } protected ICompilerRequestor getBatchRequestor ( ) { } protected CompilationUnit [ ] getCompilationUnits ( ) throws InvalidInputException { }

Fix:
String classProp = System . getProperty ( "DEFAULT_CLASSPATH" ) ;