5

Come posso caricare un file .java in una CompilationUnit? Ad esempio, diciamo che ho un file A.java nel mio progetto corrente. Vorrei caricarlo in una CompilationUnit e poi passarlo a ASTParser. Non è un'opzione solo caricarlo come un testo normale poiché sembra che in tal caso non otterrò le informazioni di binding nell'AST.Eclipse crea CompilationUnit dal file .java

risposta

9

È possibile caricare i progetti utilizzando le librerie jdt e eclipse core.

Utilizzando il seguente codice è possibile caricare tutti i progetti nell'area di lavoro.

IWorkspace workspace = ResourcesPlugin.getWorkspace(); 
IWorkspaceRoot root = workspace.getRoot(); 
// Get all projects in the workspace 
IProject[] projects = root.getProjects(); 

Quindi è possibile ottenere pacchetti e, a sua volta, i file java.

IPackageFragment[] packages = JavaCore.create(project).getPackageFragments(); 
IPackageFragment mypackage = packages.get(0); // implement your own logic to select package 
ICompilationUnit unit = mypackage.getCompilationUnits(); 

Quindi è possibile utilizzare questo oggetto ICompilationUnit per ottenere il CompilationUnit

ASTParser parser = ASTParser.newParser(AST.JLS3); 
parser.setKind(ASTParser.K_COMPILATION_UNIT); 
parser.setSource(unit); 
parser.setResolveBindings(true); 
CompilationUnit cUnit = parser.createAST(null); 

Questo oggetto CompilationUnit può essere trasmessa al ASTParser.

+0

Funzionerà solo per i progetti Eclipse? Io, non funzionerà per i progetti Java? – bellpeace

+0

Non è possibile utilizzare JDT nei progetti java con file jar. Per utilizzare JDT, è necessario che il programma sia in esecuzione come plug-in (o almeno, un'applicazione abilitata per OSGi). –

+0

Ok, quindi posso caricare il file .java su CompilationUnit con questo approccio solo per i progetti di Eclipse. Per vostra informazione, è possibile utilizzare JDT al di fuori dei progetti di eclipse usando setSource (char []) e setEnvironment. (dalla versione 3.6) – bellpeace

Problemi correlati