Buggy code:
private CompilationResult result ; private File sandbox ; private File baseDir ; private Main main ; private String [ ] ajcArgs ; private int incrementalStage = 10 ; private boolean shouldEmptySandbox = true ; private AjcCommandController controller ; private static boolean verbose = ! ( System . getProperty ( "org.aspectj.tools.ajc.Ajc.verbose" , "false" ) . equals ( "false" ) ) ; public Ajc ( ) { } public void setShouldEmptySandbox ( boolean empty ) { } public CompilationResult compile ( String [ ] args ) throws IOException { } private CompilationResult compile ( String [ ] args , boolean isIncremental ) throws IOException { } private boolean hasSpecifiedIncremental ( String [ ] args ) { } public CompilationResult doIncrementalCompile ( ) throws IOException { } public CompilationResult getLastCompilationResult ( ) { } public File getSandboxDirectory ( ) { } public void setBaseDir ( File dir ) { } private void addMessagesTo ( List aList , IMessage [ ] messages ) { } private boolean isIncremental ( String [ ] args ) { } private void createEmptySandbox ( ) { } private String [ ] adjustToSandbox ( String [ ] args , boolean doCopy ) throws IOException { String [ ] newArgs = new String [ args . length ] ; boolean hasClasspath = false ; boolean hasOutdir = false ; for ( int i = 0 ; i < ( args . length ) ; i ++ ) { newArgs [ i ] = args [ i ] ; if ( FileUtil . hasSourceSuffix ( args [ i ] ) ) { File f = new File ( args [ i ] ) ; newArgs [ i ] = adjustFileOrDir ( f , doCopy ) . getAbsolutePath ( ) ; } else { if ( ( ( ( ( ( ( ( ( ( args [ i ] . equals ( "-aspectpath" ) ) || ( args [ i ] . equals ( "-inpath" ) ) ) || ( args [ i ] . equals ( "-injars" ) ) ) || ( args [ i ] . equals ( "-outjar" ) ) ) || ( args [ i ] . equals ( "-classpath" ) ) ) || ( args [ i ] . equals ( "-sourceroots" ) ) ) || ( args [ i ] . equals ( "-Xlintfile" ) ) ) || ( args [ i ] . equals ( "-extdirs" ) ) ) || ( args [ i ] . equals ( "-d" ) ) ) && ( ( args . length ) > ( i + 1 ) ) ) { newArgs [ i ] = args [ i ] ; StringBuffer buff = new StringBuffer ( ) ; boolean copyThisTime = doCopy ; if ( args [ i ] . equals ( "-d" ) ) { copyThisTime = false ; hasOutdir = true ; } StringTokenizer strTok = new StringTokenizer ( args [ ( ++ i ) ] , File . pathSeparator ) ; while ( strTok . hasMoreTokens ( ) ) { File f = new File ( strTok . nextToken ( ) ) ; buff . append ( adjustFileOrDir ( f , copyThisTime ) . getAbsolutePath ( ) ) ; if ( strTok . hasMoreTokens ( ) ) buff . append ( File . pathSeparator ) ; } newArgs [ i ] = buff . toString ( ) ; if ( args [ ( i - 1 ) ] . equals ( "-classpath" ) ) { hasClasspath = true ; <START_BUG> newArgs [ i ] = ( ( newArgs [ i ] ) + ( File . pathSeparator ) ) + ( Ajc . TESTER_PATH ) ; <END_BUG> } } else { File f = new File ( args [ i ] ) ; if ( f . exists ( ) ) { newArgs [ i ] = adjustFileOrDir ( f , doCopy ) . getAbsolutePath ( ) ; } } } } if ( ! hasClasspath ) { String [ ] oldArgs = newArgs ; newArgs = new String [ ( oldArgs . length ) + 2 ] ; System . arraycopy ( oldArgs , 0 , newArgs , 0 , oldArgs . length ) ; newArgs [ oldArgs . length ] = "-classpath" ; newArgs [ ( ( oldArgs . length ) + 1 ) ] = ( ( Ajc . TESTER_PATH ) + ( File . pathSeparator ) ) + ( getSandboxDirectory ( ) . getAbsolutePath ( ) ) ; } if ( ! hasOutdir ) { String [ ] oldArgs = newArgs ; newArgs = new String [ ( oldArgs . length ) + 2 ] ; System . arraycopy ( oldArgs , 0 , newArgs , 0 , oldArgs . length ) ; newArgs [ oldArgs . length ] = "-d" ; newArgs [ ( ( oldArgs . length ) + 1 ) ] = getSandboxDirectory ( ) . getPath ( ) ; } return newArgs ; }

Fix:
newArgs [ i ] = ( ( ( ( newArgs [ i ] ) + ( File . pathSeparator ) ) + ( Ajc . TESTER_PATH ) ) + ( File . pathSeparator ) ) + ( getSandboxDirectory ( ) . getAbsolutePath ( ) ) ;