easyexplorer是eclipse下直接在资源管理器中打开文件的一个插件。笔者在网上下载的是1.0.4版本。这个版本在windows下运行良好,但它只支持windows与mac系统(后面会说明缘由),若是在linux上打开会提示:java
在网上有的说能够经过设置这个插件的执行命令为“nautilus {0}”就能够了,但结果却很使人失望。经过反编译这个插件咱们会发现它为何在linux上运行失败,以下是反编译EasyExplorePlugin.class获得的其中一个方法
linux
public boolean isSupported() { String osName = System.getProperty("os.name"); return (osName.indexOf("Windows") != -1) || (osName.indexOf("Mac") != -1); }
很明显easyexplorer就是经过这个方法来判断是否支持在某个系统上的运行。windows
既然要修改的地方找到了,那接下来就是修补了。
由于笔者不会eclipse插件开发,也没有开发所须要的环境,因此没法从源码直接修补编译这个类。这里用到了一个第三方的工具:javassist
在elipse中新建一个项目,而后将javassist.jar与easyexplorer.jar(从下载获得的org.sf.easyexplore_1.0.4.jar中解压获得)加入到这个工程的classpath上。编写以下代码:
eclipse
public static void main(String[] args) throws Exception{ ClassPool cp=ClassPool.getDefault(); //取得EasyExplorePlugin的编译时Class CtClass ct=cp.getCtClass("org.sf.easyexplore.EasyExplorePlugin"); //获得isSupported编译时方法 CtMethod targetMethod=ct.getDeclaredMethod("isSupported"); //修改这个方法 targetMethod.setBody("{return true;}"); //将修改后的EasyExplorePlugin类保存起来 ct.writeFile("/home/acer/Desktop/current/"); }
用运行上面代码,将获得的 EasyExplorePlugin.class替换掉原easyexplorer.jar中的 EasyExplorePlugin.class文件,而后将修补后的插件复制到eclipse安装目录的plugins目录下(若是之前有这个插件,要先把这个插件删除并重启eclipse后再复制)。接下来在window->prefrences->Easy Explorer配置easyexplorer执行命令为"nautilus {0}"就能够了。若是您系统使用的是其余文件管理器,请将nautilus换成您可在命令行中访问的对应管理器的运行指令。编辑器
其实还有个更简便的方法进行修补,即直接修补这个 EasyExplorePlugin.class类文件:
用十六进制编辑器打开这个 EasyExplorePlugin.class文件,而后搜索“Mac”文本,将搜索到的“Mac”字符串替换成“Lin”后保存,而后用这个修补后的类文件替换掉原来的就能够了。这里有一点要注意的是替换后的字符串长度要与原字符串长度同样。工具