Eclipse ändert den Speicherort der Projektdateien

72

Ich habe ein Eclipse-Projekt (Flex Builder), dessen Speicherort auf dem Laufwerk geändert wurde. Wenn ich Eclipse starte, kann ich das Projekt aufgelistet sehen, aber es sind keine tatsächlichen Dateien aufgelistet. Wenn Sie mit der rechten Maustaste auf das Projekt klicken und Eigenschaften auswählen, wird der alte Pfad angezeigt, in dem die Dateien gespeichert wurden, aber ich kann ihn nicht ändern.

Wie kann ich den Speicherort eines Eclipse-Projekts ändern, in dem nach der Erstellung des Projekts nach den Dateien gesucht wird?

Luke
quelle
3
Siehe die akzeptierte Antwort auf diese Frage: stackoverflow.com/questions/3479466/…
Schmuli

Antworten:

74

Sie können Ihre .classpathund .projectDateien in das Stammverzeichnis des neuen Projektverzeichnisses kopieren und dann im Dateimenü die Option "Importieren ..." und dann "Allgemeine / Vorhandene Projekte in Arbeitsbereich" auswählen. Suchen Sie im daraufhin angezeigten Dialogfeld das Stammverzeichnis des neuen Projektverzeichnisses und beenden Sie den Vorgang. Stellen Sie vor dem Import sicher, dass Sie das alte Projekt aus dem Arbeitsbereich gelöscht haben.

akf
quelle
9
Wenn Sie Ihr verschobenes Projekt in denselben Arbeitsbereich importieren, müssen Sie zuerst das alte Projekt löschen, da Sie sonst mit Eclipse nicht mit dem Import fortfahren können.
Jean-Pierre Schnyder
8
Das heißt, löschen Sie das alte Projekt aus dem Arbeitsbereich (nicht von der Festplatte!)
Rose Perrone
Ich mache das und mein Projekt ist in Ordnung. Wenn Sie jedoch auf "Fertig stellen" klicken (was blinkt, als ob ich bereit wäre, etwas zu tun), wird nichts getan. Der Dialog bleibt aktiv. keine Fehlermeldung. Gibt es noch etwas zu tun?
BeccaP
6
ZU KOMPLIZIERT ... Klicken Sie einfach mit der rechten Maustaste auf das Projekt -> Refactor -> Verschieben.
Menefee
4
@Menefee Ich glaube, Ihr Ansatz funktioniert nur, wenn der Speicherort der Dateien noch nicht geändert wurde (weil Refactor> Move die eigentlichen Projektdateien verschiebt). Das OP wollte die Verweise auf Dateien aktualisieren, deren Speicherort bereits geändert wurde. In diesem Fall scheint Eclipse immer noch keine einfachere Lösung zu bieten als die akzeptierte Antwort.
TanguyP
33

Viel einfacher: Rechtsklick -> Refactor -> Verschieben.

kerner1000
quelle
denn in diesem Fall ist einfacher besser.
Natedennis
@ Luke bitte akzeptiere das! Es ist aktueller. Funktioniert super und nahtlos!
ADTC
Wirklich die bessere Antwort ;-)
GhostCat
Sie haben auch keinen "Refraktor" mit der rechten Maustaste, aber ich kann ihn im Menü "Refraktor" im "Sript Explorer" finden, aber "Verschieben ..." ist ausgegraut. : '(
E-Motiv
Verwenden Sie die Ansicht "Paket-Explorer" anstelle der Ansicht "Projektexplorer", um den Befehl refactor abzurufen.
Boann
23

Dieser Link zeigt, wie Sie die Metadaten des Eclipse-Arbeitsbereichs bearbeiten, um den Speicherort des Projekts manuell zu aktualisieren. Dies ist hilfreich, wenn sich der Speicherort bereits geändert hat oder Sie viele Projekte verschieben müssen und nicht mehrere Klicks und Wartezeiten für jedes einzelne ausführen möchten: https: //web.archive.org/web/20160421171614/http://www.joeflash.ca/blog/2008/11/moving-a-fb-workspace-update.html

sunil
quelle
Der erwähnte Link ist tot. Hier ist eine zwischengespeicherte Version: web.archive.org/web/20160421171614/http://www.joeflash.ca/blog/…
11101101b
@ 11101101b Danke für das Update. Ich habe den Link im Original-Thread
geändert
9

Es gibt jetzt ein Plugin (seit Ende 2012), das sich darum kümmern kann: gensth / ProjectLocationUpdater auf GitHub.

Parvus
quelle
1
Dieses Plugin funktioniert perfekt! Dies hilft sehr, wenn Sie Sachen auf der Festplatte verschoben haben :)
SebastianH
ProjectLocationUpdater wirkte wie ein Zauber. Wir hatten zuvor nur einen zusätzlichen Schritt zu erledigen: Da wir auf einen anderen Computer ohne dieselben Festplattenlayouts umgestiegen sind, mussten wir auf ein anderes Laufwerk + Speicherort (von D: nach C: \ dev) umziehen: Wir mussten den alten Ordner bereitstellen Speicherort, an dem Eclipse die alten Dateien mit subst D: C: \ dev finden kann. (Unter Linux / Max hätte ein Symlink den Trick gemacht)
Jidehem
1

Wenn Sie Ihr Projekt als lokale Kopie eines Repositorys gespeichert haben, ist es möglicherweise besser, es aus git zu importieren. Wählen Sie lokal aus und navigieren Sie dann zu Ihrem Git-Repository-Ordner. Das hat für mich besser funktioniert, als es als bestehendes Projekt zu importieren. Der Versuch des letzteren erlaubte mir nicht, "fertig zu werden".

BeccaP
quelle
0

Neon benutzen - ist mir auch passiert. Sie müssten die Eclipse-Version (nicht von der Festplatte) in Ihrem Projektexplorer löschen und die Projekte als vorhandene Projekte importieren. Stellen Sie natürlich sicher, dass die Projektordner als Ganzes verschoben wurden und dass die Eclipse-Metadateien noch vorhanden sind, wie von @koenpeters erwähnt.

Refactor kümmert sich nicht darum.

Justin Wolf
quelle
0

Ich habe meinen Standard-Git-Repository-Ordner verschoben und hatte daher das gleiche Problem. Ich habe meine eigene Klasse geschrieben, um den Eclipse-Standort zu verwalten, und damit die Standortdatei geändert.

        File locationfile 
            = new File("<workspace>"
                    +"/.metadata/.plugins/org.eclipse.core.resources/.projects/"
                    +"<project>/"
                    +".location");

        byte data[] = Files.readAllBytes(locationfile.toPath());

        EclipseLocation eclipseLocation = new EclipseLocation(data);

        eclipseLocation.changeUri("<new path to project>");

        byte newData[] = eclipseLocation.getData();

        Files.write(locationfile.toPath(),newData);

Hier meine EclipseLocation-Klasse:

public class EclipseLocation {

    private byte[] data;
    private int length;
    private String uri;


    public EclipseLocation(byte[] data) {
        init(data);
    }

    public String getUri() {
        return uri;
    }

    public byte[] getData() {
        return data;
    }


    private void init(byte[] data) {

        this.data = data;   
        this.length = (data[16] * 256) + data[17];
        this.uri = new String(data,18,length);  
    }


    public void changeUri(String newUri) {

        int newLength = newUri.length();
        byte[] newdata = new byte[data.length + newLength - length];        


        int y = 0;
        int x = 0;

        //header
        while(y < 16) newdata[y++] = data[x++];

        //length
        newdata[16] = (byte) (newLength / 256);
        newdata[17] = (byte) (newLength % 256);

        y += 2;
        x += 2;

        //Uri
        for(int i = 0;i < newLength;i++)
        {
            newdata[y++] = (byte) newUri.charAt(i);
        }
        x += length;

        //footer
        while(y < newdata.length) newdata[y++] = data[x++];

        if(y != newdata.length)
            throw new IndexOutOfBoundsException();

        if(x != data.length)
            throw new IndexOutOfBoundsException();

        init(newdata);
    }


}
Luise Fassbinder
quelle