2011-07-10 9 views
7

Tengo el siguiente códigono puede lanzar el proyecto Eclipse para IJavaProject

IJavaProject targetProject = null; 
    IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); 
    for (IProject project : root.getProjects()) { 
     if (project.getName().equals(projName)) { 
      try { 
       if (project.hasNature("org.eclipse.jdt.core.javanature")) { 
        targetProject = (IJavaProject) project; 
       } 
      } catch(...) { 
      // etc ... 
      } 

Lo que estoy tratando de hacer es volver esencialmente un proyecto que coincide con un nombre particular como un IJavaProject. Como se puede ver, puedo comprobar para asegurarse de que el proyecto en cuestión tiene un carácter java llamando:

if (project.hasNature("org.eclipse.jdt.core.javanature")) { 

Ay, me sale un 'ClassCaseException' indicando

java.lang.ClassCastException: 
    org.eclipse.core.internal.resources.Project cannot be cast to org.eclipse.jdt.core.IJavaProject 

Cualquier idea de por qué? Hubiera pensado que una vez que un IProject tiene una naturaleza java, se puede convertir en un IJavaProject. No puedo acceder a la API principal de JDT en este momento ya que el servicio no está disponible here.

Respuesta

21

El código en su respuesta no debería funcionar (¿typo?). Aquí es cómo se puede crear una IJavaProject:

import org.eclipse.jdt.core.JavaCore 
... 
    if (project.hasNature(JavaCore.NATURE_ID)) { 
     targetProject = JavaCore.create(project); 
    } 

IProject es un tipo en el API de Recursos Eclipse y IJavaProject es un tipo de Java en el modelo Eclipse. No son las mismas abstracciones, pero todos IJavaProjects tienen un IProject.

+0

Sí, era un tipo;) – Joeblackdev

Cuestiones relacionadas