Categorías
Java Development Tools (JDT)

Tutorial de Eclipse JDT – Modelo Java – Crear, acceder, cargar proyectos

En este artículo, usaremos Eclipse JDT para crear, acceder y cargar proyectos. Supongo que sabe cómo crear un proyecto de complemento de Eclipse simple que agrega un elemento de menú en el que puede hacer clic y activar algunas acciones. Si no lo sabe, puede consultar este artículo. La razón por la que necesitamos un proyecto de complemento es que el modelo Java solo funciona dentro de un complemento, una aplicación independiente no es compatible con el modelo Java.

Este artículo solo se centra en el modelo JDT Java. Se explorarán los siguientes tres temas:

  • Crea proyectos en el espacio de trabajo
  • Acceder a proyectos en el espacio de trabajo
  • Importe dinámicamente proyectos existentes al espacio de trabajo

Esos son esencialmente importantes cuando desea procesar una gran cantidad de proyectos Java.

1. Crea proyectos

Podemos usar Java Model para crear un nuevo proyecto en el espacio de trabajo.

Lo siguiente aquí requiere las siguientes dependencias:

import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.IClasspathEntry;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.launching.JavaRuntime;

Agregue código para ejecutar el método. El código ignora las declaraciones try / catch, Eclipse le pedirá que agregue código de manejo de excepciones.

// create a project with name "TESTJDT"
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
IProject project = root.getProject("TESTJDT");
project.create(null);
project.open(null);
 
//set the Java nature
IProjectDescription description = project.getDescription();
description.setNatureIds(new String[] { JavaCore.NATURE_ID });
 
//create the project
project.setDescription(description, null);
IJavaProject javaProject = JavaCore.create(project);
 
//set the build path
IClasspathEntry[] buildPath = {
		JavaCore.newSourceEntry(project.getFullPath().append("src")),
				JavaRuntime.getDefaultJREContainerEntry() };
 
javaProject.setRawClasspath(buildPath, project.getFullPath().append(
				"bin"), null);
 
//create folder by using resources package
IFolder folder = project.getFolder("src");
folder.create(true, true, null);
 
//Add folder to Java element
IPackageFragmentRoot srcFolder = javaProject
				.getPackageFragmentRoot(folder);
 
//create package fragment
IPackageFragment fragment = srcFolder.createPackageFragment(
		"com.programcreek", true, null);
 
//init code string and create compilation unit
String str = "package com.programcreek;" + "n"
	+ "public class Test  {" + "n" + " private String name;"
	+ "n" + "}";
 
		ICompilationUnit cu = fragment.createCompilationUnit("Test.java", str,
				false, null);
 
//create a field
IType type = cu.getType("Test");
 
type.createField("private String age;", null, true, null);
  Contar el número de declaraciones en un método Java utilizando Eclipse JDT ASTParser

Cuando active la acción, se creará el siguiente proyecto.

2. Acceder a proyectos

Si ya hay proyectos en nuestro espacio de trabajo, podemos usar Java Model para recorrer cada uno de ellos.

	public void run(IAction action) {
		// Get the root of the workspace
		IWorkspace workspace = ResourcesPlugin.getWorkspace();
		IWorkspaceRoot root = workspace.getRoot();
		// Get all projects in the workspace
		IProject[] projects = root.getProjects();
		// Loop over all projects
		for (IProject project : projects) {
			System.out.println(project.getName());
		}
 
	}

Si importamos algunos proyectos o creamos algunos, y hacemos clic en el elemento del menú que creamos, los nombres de los proyectos se mostrarán de la siguiente manera.

3. Cargar / importar dinámicamente proyectos existentes en el espacio de trabajo

En el paso anterior, necesitamos importar manualmente los proyectos existentes al espacio de trabajo. Si el número es mayor, esto no sería aplicable.

Eclipse JDT proporciona funciones para hacer esto de forma dinámica. Ahora veamos cómo importar una gran cantidad de proyectos existentes al espacio de trabajo. No copia archivos al directorio raíz del espacio de trabajo, solo apunta a los proyectos en el directorio externo. En el ejemplo, utilizo la unidad flash para guardar mis proyectos de código abierto. De esta manera, puede analizar miles de proyectos y obtener la información útil que necesita sin copiar nada.

  ¿Cómo resolver enlaces al usar Eclipse JDT ASTParser?
IWorkspaceRoot root= ResourcesPlugin.getWorkspace().getRoot();
 
final IWorkspace workspace = ResourcesPlugin.getWorkspace();
 
System.out.println("root" + root.getLocation().toOSString());
 
Runnable runnable = new Runnable() {
	public void run() {
		try {
			IPath projectDotProjectFile = new Path("/media/flashx/TestProjectImport" + "/.project");
			IProjectDescription projectDescription = workspace.loadProjectDescription(projectDotProjectFile);
			IProject project = workspace.getRoot().getProject(projectDescription.getName());
			JavaCapabilityConfigurationPage.createProject(project, projectDescription.getLocationURI(),	null);
			//project.create(null);
		} catch (CoreException e) {
			e.printStackTrace();
		}
	}
};
 
// and now get the workbench to do the work
final IWorkbench workbench = PlatformUI.getWorkbench();
workbench.getDisplay().syncExec(runnable);
 
 
IProject[] projects = root.getProjects();
 
for(IProject project: projects){
	System.out.println(project.getName());
}

¿Qué pasa si el proyecto que queremos cargar no contiene un archivo .project? Este es el caso complicado, necesitamos crear dinámicamente todos esos proyectos usando su código fuente.

Notas

Cuando practique los ejemplos anteriores, es posible que obtenga un mensaje de error como «El tipo org.eclipse.core.runtime.IAdaptable no se puede resolver. Se hace referencia indirectamente a partir de archivos .class obligatorios». La solución es agregar org.eclipse.core.runtime mediante el Editor de menús de complementos. Simplemente agregar a la ruta de construcción no funcionará.

  Insertar líneas en blanco en el código fuente utilizando Eclipse JDT

Si cree que este artículo es útil y desea leer más, puede ir a Eclipse JDT Tutorial Series que escribí.

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *