7 Stimmen

Wie erstellt man Pakete (Ordner) in einem Eclipse-Projekt über ein Plugin

Ich versuche, ein kleines Plugin für Eclipse zu entwickeln, um mehrere Java-Dateien in verschiedenen Ordnern (Packages) als Ausgangspunkt für ein neues Modul einer größeren Software zu erstellen.

Ich habe versucht, ein IFile-Objekt wie folgt zu verwenden:

final IFile file = container.getFile(new Path(myFileName));
...
file.create(stream, true, monitor);

Das funktioniert, solange alle Ordner auf dem Pfad zur Datei existieren. Es erstellt jedoch keine fehlenden Ordner (neue Packages), sondern wirft eine "Ressource existiert nicht"-Ausnahme.

Ich konnte keinen Weg finden, dies über IResource- oder IWorkspace-Objekte zu tun.

10voto

Matthew Farwell Punkte 59529

Persönlich verwende ich eine kleine Methode, die rekursiv alle Ordner erstellt, so etwas wie:

IFile file = project.getFile(newPath);

prepare((IFolder) file.getParent());

und dann die Methode

public void prepare(IFolder folder) {
    if (!folder.exists()) {
        prepare((IFolder) folder.getParent())
        folder.create(false, false, null);
    }
}

Dies funktioniert gut für mich.

0 Stimmen

Ich bin einfach nicht auf das IFolder Interface gestoßen - also vielen Dank!

4 Stimmen

Ich musste auch den Typ des übergeordneten Containers überprüfen, wie hier: if (folder.getParent() instanceof IFolder) vorbereiten.... Andernfalls würde der letzte Aufruf von getParent ein IProject zurückgeben und der anschließende Cast eine ClassCastException verursachen.

0voto

Olivier Croisier Punkte 6051

Ich weiß, dass dies Ihre Frage nicht beantwortet, aber darf ich vorschlagen, dass Sie sich Maven-Archetypen ansehen? Auf diese Weise könnten Sie Projektvorlagen mit der gewünschten Verzeichnisstruktur und Boilerplate-Dateien auf eine konfigurierbare und nicht von Eclipse abhängige Weise erstellen.

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