2011-07-10 13 views
7

मेरे पास निम्न कोडग्रहण परियोजना को 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 के रूप में मेल खाता है। जैसा कि आप देख सकते हैं, मैं यह सुनिश्चित करने के लिए जांच करता हूं कि प्रश्न में प्रोजेक्ट में जावा प्रकृति है:

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

हां, मुझे 'क्लाससेज़ एक्सेप्शन' मिलता है

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

कोई विचार क्यों? मैंने सोचा होगा कि एक बार आईप्रोजेक्ट में जावा प्रकृति होती है, इसे आईजेवाप्रोजेक्ट में डाला जा सकता है। इस समय मैं जेडीटी कोर एपीआई तक पहुंच नहीं प्राप्त कर सकता क्योंकि सेवा अनुपलब्ध here है।

उत्तर

21

आपके उत्तर में कोड काम नहीं करना चाहिए (टाइपो?)। यहां आपके द्वारा किसी IJavaProject बना सकते हैं:

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

IProject ग्रहण संसाधन एपीआई में एक प्रकार है और IJavaProject ग्रहण जावा मॉडल में एक प्रकार है। वे एक ही सार तत्व नहीं हैं, लेकिन सभी IJavaProjects में एक आईप्रोजेक्ट है।

+0

हाँ यह एक प्रकार था;) – Joeblackdev

संबंधित मुद्दे