eclipse直接复制.metadata后路径问题解决方案

96
作者 山东大葱哥
2017.09.03 12:35* 字数 650

在工作中经常遇到需要对项目工程或workspace进行变更或者将工程复制到其他电脑,然后又需要在eclipse中导入项目进行对应配置。说实话我比较懒,不愿每次都重新导入(其实标准工程导入工作量也不怎么大的),就想能不能直接把工作空间的配置复制到因的工作空间中呢?其实理论是完全没问题的,毕竟eclipse就是把工作空间的设置放在了.metadata中。那就试一下,发现启动eclipse时报错了。经过摸索最终得出了解决思路,eclipse 项目迁移路径后直接复制workspace引发内部项目路径错误问题解决办法:

找到病根

在新工作空间找到
.metadata.plugins\org.eclipse.core.resources.projects\【projectname】.location文件。
这里描述了工作空间中的所有项目信息(包括路径 项目名等)、项目集信息、项目间依赖信息。

分析病况

通过文本文件编辑器可以看到项目路径为复制前的路径(原空间与新工作空间路径不一致导致出现启动异常),需要修改为新的路径名。

确定治疗方案

注意,该文件内容部分为二进制格式,不能用记事本等文本编辑器直接修改的,需要通过ue进行编辑修改(十六进制)。修改部分截图如下


location文件内容
location文件内容

药到病除的治疗

URI前的16进制54H 表示紧随其后的项目路径长度的字节数,需要与修改后的路径长度一致。
修改uri后内容为新空间的项目路径名,统计路径字节数,修改uri前的数字为对应的字节数。

病灶区分析

每个项目可能存在依赖项目,迁移时可能会有依赖项目名称变动,需要检查修改。
路径后的00h 00h 00h 01h 00h 18h,其中00 01h表示依赖项目有一个,
00 18h表示依赖项目的长度字节数

理论依据

  1. eclipse对应源代码链接地址:
    eclipse对应源代码
    eclipse解析location源代码
  2. location文件数据结构描述:
the project location and the project's dynamic references are stored here.The project location will be set to null if the default location should be used. In the case of failure, log the exception and return silently, thus reverting to using the default location and no dynamic references. The current format of the location file is:
UTF - project location
int - number of dynamic project references
UTF - project reference 1
... repeat for remaining references

学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入技术爱好者交流群373107565,我们一起学技术!

技术随笔