8 Stimmen

Eclipse-Projekt kann nicht auf IJavaProject übertragen werden

Ich habe den folgenden Code

    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 ...
            }

Was ich zu tun versuche, ist im Wesentlichen ein Projekt zurückgeben, die einen bestimmten Namen als IJavaProject entspricht. Wie Sie sehen können, prüfe ich, ob das betreffende Projekt einen Java-Charakter hat, indem ich es aufrufe:

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

Leider erhalte ich eine 'ClassCaseException', die besagt

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

Haben Sie eine Idee, warum? Ich hätte gedacht, dass, sobald ein IProject eine Java-Natur hat, kann es zu einem IJavaProject gegossen werden. Ich kann nicht auf die JDT Core API im Moment zugreifen, da der Dienst nicht verfügbar ist aquí .

22voto

Andrew Eisenberg Punkte 27429

Der Code in Ihrer Antwort sollte nicht funktionieren (Tippfehler?). Hier sehen Sie, wie Sie ein IJavaProject erstellen können:

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

IProject ist ein Typ in der Eclipse Resources API und IJavaProject ist ein Typ im Eclipse Java Model. Sie sind nicht dieselben Abstraktionen, aber alle IJavaProjects haben ein IProject.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X