73 votes

Eclipse change l'emplacement des fichiers du projet

J'ai un projet Eclipse (Flex Builder) dont les fichiers réels ont changé d'emplacement sur le disque. Lorsque je démarre Eclipse, je vois le projet listé mais aucun fichier n'est listé. Si je fais un clic droit sur le projet et que je sélectionne les propriétés, j'obtiens l'ancien chemin d'accès où les fichiers étaient stockés, mais je ne peux pas le modifier.

Comment puis-je changer l'emplacement des fichiers d'un projet Eclipse où il cherchera les fichiers après la création du projet ?

3 votes

Voir la réponse acceptée pour cette question : stackoverflow.com/questions/3479466/

75voto

akf Points 23518

Vous pouvez copier votre .classpath et .project à la racine du nouveau répertoire de projet, puis choisissez "Importer..." dans le menu Fichier, et sélectionnez "Général/Projets existants dans l'espace de travail". Dans la boîte de dialogue qui s'affiche, localisez la racine du répertoire du nouveau projet et terminez. Assurez-vous que vous avez supprimé l'ancien projet de l'espace de travail avant de procéder à l'importation.

9 votes

Si vous importez votre projet relocalisé dans le même espace de travail, vous devrez d'abord supprimer l'ancien projet, sinon Eclipse ne vous laissera pas poursuivre l'importation.

8 votes

C'est-à-dire supprimer l'ancien projet de l'espace de travail (pas du disque !).

0 votes

C'est ce que je fais, et il trouve mon projet sans problème. Cependant, cliquer sur "finish" (qui clignote comme s'il était prêt à faire quelque chose) ne fait rien. La boîte de dialogue reste affichée, sans message d'erreur. Y a-t-il quelque chose d'autre à faire ?

34voto

kerner1000 Points 1182

Beaucoup plus simple : Clic droit -> Refactor -> Déplacer.

0 votes

Car dans ce cas, le plus simple est le mieux.

0 votes

@Luke s'il vous plaît acceptez ceci ! C'est plus actuel. Fonctionne très bien et sans problème !

0 votes

C'est vraiment la meilleure réponse ;-)

23voto

sunil Points 3123

Ce lien montre comment modifier les métadonnées de l'espace de travail d'eclipse pour mettre à jour manuellement l'emplacement du projet, ce qui est utile si l'emplacement a déjà changé ou si vous avez beaucoup de projets à déplacer et que vous ne voulez pas faire plusieurs clics et attentes pour chacun d'eux : https://web.archive.org/web/20160421171614/http://www.joeflash.ca/blog/2008/11/moving-a-fb-workspace-update.html

0 votes

Le lien mentionné est mort. Voici une version en cache : web.archive.org/web/20160421171614/http://www.joeflash.ca/blog/

0 votes

@11101101b Merci pour la mise à jour. J'ai modifié le lien dans le fil de discussion original

9voto

parvus Points 1269

Il existe désormais un plugin (depuis fin 2012) qui peut s'en charger : gensth/ProjectLocationUpdater sur GitHub.

1 votes

Ce plugin fonctionne parfaitement ! Cela aide beaucoup lorsque vous avez déplacé des éléments sur le disque :)

0 votes

ProjectLocationUpdater a fonctionné comme un charme. Auparavant, nous n'avions qu'une seule étape supplémentaire à franchir : puisque nous déménagions sur un autre ordinateur sans la même disposition des disques, nous devions changer de lecteur et d'emplacement (de D : à C:\dev ) : nous avons dû monter l'ancien emplacement du dossier pour permettre à eclipse de trouver les anciens fichiers en utilisant le subst D : C:\dev. (Sous Linux/Max, un lien symbolique aurait fait l'affaire).

1voto

J'ai déplacé mon dossier de dépôt git par défaut et j'ai donc eu le même problème. J'ai écrit ma propre classe pour gérer l'emplacement d'eclipse et je l'ai utilisée pour changer le fichier d'emplacement.

        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);

Voici ma classe EclipseLocation :

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);
    }

}

0 votes

Merci pour cette solution. C'est la meilleure approche, car elle élimine la possibilité d'une erreur humaine. Un détail qu'il est utile de noter, cependant, est que "newUri" est : "URI//file :" + <absolute_path_to_new_location_of_project>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X