2011-07-10 59 views
7

我有以下代碼無法施展Eclipse項目到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 ... 
      } 

我所試圖做的是本質上返回一個特定的名稱相匹配作爲IJavaProject項目。正如你所看到的,我檢查,以確保有問題的項目具有Java性質致電:

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

唉,我得到一個「ClassCaseException」指出

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

任何想法,爲什麼?我一直認爲,一旦IProject具有java特性,就可以將其轉換爲IJavaProject。由於服務不可用,我目前無法訪問JDT Core API here

回答

21

您的答案中的代碼不應該工作(打字錯誤?)。下面是如何創建一個IJavaProject:

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

IProject是Eclipse資源API的類型和IJavaProject是在Eclipse Java模型類型。它們不是相同的抽象,但所有IJavaProjects都有一個IProject。

+0

是的,它是一種類型;) – Joeblackdev

相關問題