2013-06-06 14 views
5

Io uso JDT per compilare le mie classi java. BatchCompiler restituisce una stringa, ma ho bisogno di una serie di problemi/errori con le loro informazioni su colonne e righe. compiler.compile (unità); stampa l'errore sul suo printwriter, compiler.resolve (unit) fa esattamente quello che voglio ma può compilare solo un file java.Come posso utilizzare il compilatore JDT al livello di programmazione?

ho creato un oggetto compilatore in questo modo:

Compiler compiler = new Compiler(env, DefaultErrorHandlingPolicies.exitAfterAllProblems(), new CompilerOptions(), requestor, new DefaultProblemFactory()); 

e creare CompilationUnits che contiene i nomi di file e contenuti di file al compilatore.

CompilationUnit[] units = project.toCompilationUnit(); 

quanto ne sappia io, ci sono 2 modi per compilare, uno di loro è la compilazione (unità) metodo che restituisce errori e problemi vuoto e stampa al suo PrintWriter, perché non restituisce le informazioni di colonna che non è utile per me . L'altro modo è il metodo di risoluzione (unità), ma può funzionare con una sola CompilationUnit.

Qualcuno sa come posso utilizzare il compilatore JDT a livello di codice per compilare più file?

+0

C'è qualche problema nel fare il ciclo attraverso CompilationUnits e chiamare 'resolve'. –

+0

@UnniKris Funziona ma, come ho detto, la risoluzione richiede solo un parametro CompilationUnit. Anche se il CompilationUnits [] esegue il ciclo, non risolve il problema perché sto provando a compilare un progetto che include molti file .java che dipendono l'uno dall'altro e la CompilationUnit non ha alcuna informazione sugli altri CompilationUnits. –

risposta

0

org.eclipse.jdt.internal.compiler.Compiler è l'API interna. Secondo JavaDoc del suo metodo resolve: Internal API used to resolve a given compilation unit. Can run a subset of the compilation process.

Invece, il modo ufficiale di compilare i file Java e determinare i problemi di compilazione è descritto here. Fondamentalmente, si crea un progetto Java e si invoca il builder di Eclipse su di esso, quindi si eseguono query sugli indicatori di problemi Java del progetto.

Problemi correlati