我有一个Eclipse项目(Flex Builder),其实际文件在驱动器上的位置已更改。当我启动Eclipse时,我可以看到列出的项目,但是没有列出实际的文件。右键单击该项目并选择属性,将向我显示用于存储文件的旧路径,但无法更改。
如何在创建项目后更改Eclipse项目的文件位置?
Answers:
您可以将.classpath
和.project
文件复制到新项目目录的根目录,然后从文件菜单中选择“导入...”,然后选择“将常规/现有项目导入工作区”。在出现的对话框中,找到新项目目录的根目录并完成。导入之前,请确保已从工作空间中删除了旧项目。
简单得多:右键单击->重构->移动。
此链接显示了如何编辑Eclipse工作区元数据以手动更新项目的位置,如果位置已经更改或您有许多项目要移动并且不想单击几次并等待每个单击,则很有用: https: //web.archive.org/web/20160421171614/http://www.joeflash.ca/blog/2008/11/moving-a-fb-workspace-update.html
现在有一个插件(自2012年底开始)可以解决此问题:GitHub上的gensth / ProjectLocationUpdater。
我移动了默认的git存储库文件夹,因此遇到了同样的问题。我编写了自己的Class来管理日食的位置,并用它来更改位置文件。
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);
}
}