Eclipse изменить расположение файлов проектов
У меня есть проект Eclipse (Flex Builder), из которого фактические файлы изменили местоположение на диске. Когда я запускаю Eclipse, я вижу, что проект указан, но в нем нет файлов. Щелчок правой кнопкой мыши по проекту и выбор свойств покажет мне старый путь, в котором хранятся файлы, но я не могу его изменить.
Как я могу изменить расположение файла проекта Eclipse, где он будет искать файлы после создания проекта?
Ответы
Ответ 1
Вы можете скопировать файлы .classpath
и .project
в корневой каталог нового проекта, а затем выбрать "Импорт..." в меню файла и выбрать "Общие/Существующие проекты в Рабочем пространстве". В появившемся диалоговом окне найдите корень нового каталога проекта и выполните его. Убедитесь, что вы удалили старый проект из рабочего пространства перед импортом.
Ответ 2
Гораздо проще: щелкните правой кнопкой мыши → Refactor → Move.
Ответ 3
Эта ссылка показывает, как редактировать метаданные рабочего пространства eclipse для обновления местоположения проекта вручную, полезно, если местоположение уже изменилось или у вас много проектов для перемещения, и вы не хотите делать несколько кликов и ждет каждого:
https://web.archive.org/web/20160421171614/http://www.joeflash.ca/blog/2008/11/moving-a-fb-workspace-update.html
Ответ 4
Теперь есть плагин (с конца 2012 года), который может позаботиться об этом: gensth/ProjectLocationUpdater в GitHub.
Ответ 5
Если ваш проект сохранен как локальная копия репозитория, его лучше импортировать из git. Выберите локальный, а затем перейдите в папку репозитория git. Это работало лучше для меня, чем импортировать его в качестве существующего проекта. Попытка последнего не позволила мне "закончить".
Ответ 6
Использование Неона - просто случилось со мной. Вам нужно будет удалить версию Eclipse (не с диска) в Project Explorer и импортировать проекты в качестве существующих проектов. Конечно, убедитесь, что папки проекта в целом перемещены и что метафайлы Eclipse все еще существуют, как указано @koenpeters.
Рефактор не справляется с этим.
Ответ 7
Я переместил папку по умолчанию в git-репозиторий и поэтому столкнулся с той же проблемой. Я написал свой собственный класс для управления местоположением затмения и использовал его для изменения файла местоположения.
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);
Вот мой класс 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);
}
}