定位一个 eclipse 插件运行错误
插件是其它部门做的,同事用这个插件都没有问题,但是我这就不好使了,一打开就报错了:
看起来像是某个文件找不到。
但是这个插件拿不到源代码,先找到插件看看有没有什么线索。
找到插件 jar 文件 ‘xxx_Editor_4.5.0.jar’,因为 jar 文件其实就是个 zip 压缩包,用解压软件解压缩:
一个个文件夹翻,出错的 class 文件正是:xxxx\alexmaftei\editor\viewsEditor.class
因为 Java 虚拟机里跑的其实都是 bytecode,如果没有进行混淆或者加密什么的,是很容易再反编译回源代码的。
这个工具是公司内部用,没有啥混淆或者加密的必要,所以,应该是没问题可以反编译的。
在 http://javare.cn 对 viewsEditor.class 进行反编译,成功得到 viewsEditor.java。有希望了!
在源文件中搜索,出问题的函数:
public void createPartControl(Composite parent) { String generalConfigPath = getSoftwareFolderPath() + "/02_SW"; File file = searchFile(generalConfigPath, "AUTOSAR_MOD_ECUConfigurationParameters.arxml"); ... }
在目录中手动搜索,文件 AUTOSAR_MOD_ECUConfigurationParameters.arxml 是有的,那应该是 getSoftwareFolderPath() 这个函数的问题。
public static String getSoftwareFolderPath() { ... for(int swPath = 0; swPath < subPath.length; ++swPath) { if(subPath[swPath].contains("Software")) { swPathId = swPath; } } ... }
这里居然是匹配含有 “Software” 字符串的文件夹名字。。。而我为了图省事,项目根目录是从这个目录下一级开始。。。所以并没有这个“顶层”文件夹。
问题定位了,那么,解决方案只有一个,从 software 目录的上一级开始 get。。。问题解决!
——————无论在哪里做什么,只要坚持服务、创新、创造价值,其他的东西自然都会来的。