5

¿Cómo puedo cargar un archivo .java en una CompilationUnit? Por ejemplo, digamos que tengo un archivo A.java en mi proyecto actual. Me gustaría cargarlo en una CompilationUnit y luego pasarlo al ASTParser. No es una opción simplemente cargarlo como texto sin formato, ya que parece que en ese caso no obtendré la información de enlace en el AST.Eclipse create CompilationUnit del archivo .java

Respuesta

9

Puede cargar los proyectos utilizando las bibliotecas jdt y eclipse core.

Usando el siguiente código puede cargar todos los proyectos en el área de trabajo.

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

Luego puede obtener paquetes y, a su vez, los archivos de Java.

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

continuación, puede utilizar este objeto ICompilationUnit para conseguir el CompilationUnit

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

Este objeto CompilationUnit se pueden transmitir a la ASTParser.

+0

Esto funcionará solo para proyectos de Eclipse? Es decir, ¿no funcionará para proyectos de Java? – bellpeace

+0

No puede usar JDT en proyectos Java teniendo archivos jar. Para usar JDT, necesita que el programa se ejecute como un complemento (o al menos, una aplicación habilitada para OSGi). –

+0

Ok, entonces puedo cargar el archivo .java en CompilationUnit de esta manera solo para proyectos de eclipse. FYI, es posible usar JDT fuera de los proyectos de eclipse usando setSource (char []) y setEnvironment methods. (desde la versión 3.6) – bellpeace

Cuestiones relacionadas