定制Eclipse IDE之杂症篇

上文回顾:定制Eclipse IDE之插件篇(二)

该篇将讲述在开发Eclipse 插件过程发生的疑难杂症。不谈功能,只说病症。

前言、拿哪个Eclipse作为定制的基础?

我建议是你用哪个Eclipse做开发,就使用那个Eclipse作为定制的基础,因为你的插件是在这上面开发的,决对不会出现缺少必要的依赖插件。如果觉得有些插件没必要的话,也自行删除。

一、插件存在缓存的现象

在开发插件的时候,有时会存在缓存了上一次运行插件结果的现象。

解决办法:

1.在run configurations的Eclipse Application里,勾选清除“工作空间”,同时把“清除之前请求确认”勾掉。

二、插件里plugin_customization.ini一直不生效

plugin_customization.ini里面是对Eclipse的一些全局配置。有可能你会在的透视图插件里指定自己的plugin_customization.ini,但是你会发现总是不生效。

配置如下:

<extension
   id="BingoTouch"
   point="org.eclipse.core.runtime.products">
     <product
       application="org.eclipse.ui.ide.workbench"
       name="%name">
          <property name="preferenceCustomization" value="plugin_customization.ini" />
          <property name="appName" value="BingoTouch" />
          <property name="windowImages" value="icons/eclipse16.png,icons/eclipse32.png" />
          <property name="aboutText" value="%aboutText" />
     </product>
</extension>

原因解析:

其实这个是取决于你的eclipse.exe下的eclipse.ini指定运行的product是什么,打开这个文件我们会看到:

-product
org.eclipse.epp.package.rcp.product

生效的只是这个product下的plugin_customization.ini

解决办法:

解决办法有两种,一是将指定product,指向自己插件(名称就是自己插件名 + product名)。例如:

-product
com.bingo.ide.perspective.BingoTouch

另外一种是将你要生效的那个plugin_customization.ini覆盖eclipse\plugins\org.eclipse.epp.package.rcp_4.4.2.20150219-0708 目录里的plugin_customization.ini(我是用这种方法)。

三、IDE的主题设置一直无效

这个原因跟第二个有些类似,你在插件设置的主题一直无效,例如:

<property
      name="cssTheme"
      value="com.appcelerator.titanium.rcp.theme.dashboard">
</property>

原因解析:

还是生效是哪个product的原因

解决办法:

在指定的product里的plugin.xml,将cssTheme属性值改为你想要的主题id。

四、导出的插件中文乱码了

插件显示中文时候乱码了,你可能在插件里面偷懒直接写中文(正常应该是写在properties文件配置的,中文用unicode编码)。

原因解析:

插件里面如果有中文的话,你没有指定编译编码。

解决办法:

直接在build.properties编辑器的"build.properties"编辑页中,在文件最后添加如下内容(切记两个点不能少):

javacDefaultEncoding.. = UTF-8

五、插件的控制台输出在mac上显示乱码

插件控制台输出在window正常,而在mac上显示乱码了。

解决办法:

在mac的eclipse.ini加上:

-Dfile.encoding=UTF-8 

六、第二次打开eclipse,工具栏上自己新增的图标向右偏移了

在第一次打开eclipse时候,自己新增图标还是正常显示的,当第二次以后打开eclipse时候,图标就往右偏移了。

原因解析:

这个可能有不同原因,不过我的这个情况是因为主题使用的原因。 我用了aptana的主题,但在主题的样式文件里面有

.MToolControl.TrimStack {
     handle-image: url(chrome://drag-handle?height=22&background-color=#cccccc&embossed=true);
}

里面handle-image的url无法访问,引发的问题。

解决办法:

将里面的图标下到本地,换相对路径就正常了。

.MToolControl.TrimStack {
     handle-image: url(./dragHandle.png);
}

七、直接运行插件生效,导出放到新eclipse没有效果

这个问题是个致命的问题,而为了这个问题,我花了两天去检查(虽然很多的尝试都是没有效果,但最终都引导到正确的路上)。

我尝试用OSGi控制台来检查问题(因为篇幅问题,我写在另一篇文章):Eclipse OSGi调试过程

发现我的插件根本没有加载到,更别谈找错误了。

原因解析:

在百思不得其解时候,突然想到一个问题,eclipse是不是本身认不到插件,是否有个地方配置这些插件信息。后来终于被我发现,eclipse/configuration/org.eclipse.equinox.simpleconfigurator/bundles.info
所有启动插件都在这里定义,那就是我需要将我的插件放到这里。

解决办法:

例如:

com.bingo.ide.perspective,1.0.0,dropins/eclipse/plugins/com.bingo.ide.perspective_1.0.0.jar,4,false

我把我的插件信息在这,果然生效了。

相关问题:

这出现另外一个问题,因为我的eclipse插件有90多个(别问我为什么这么多),我不可能一条条信息去定义,生成Bundles.info信息,这样太蠢了。

于是整理了一个简单的Java程序去生成。代码如下:

import java.io.File;

/**
* 插件生成后,生成Bundles.info
* @author lufeng
*/
public class BuildInfo {

     final static String exportPluginPath = "F:\\source\\bingo-touch\\ide\\release\\window_64\\eclipse\\dropins\\eclipse\\plugins\\";
     final static String pluginPath ="dropins/eclipse/plugins/";

     public static void main(String[] args) {

             File direct = new File(exportPluginPath);
             File[] files = direct.listFiles();
             for(File f : files){
                 String s = f.getName();
                 int p = s.lastIndexOf("_");
                 if(p == -1)
                      continue;
                 String name = s.substring(0, p);
                 String version = s.substring(p+1);
                 if(version != null && !"".equals(version))
                      version = version.substring(0, version.lastIndexOf("."));
                 //.jar直接拼接,文件夹形式的后边加"/"
                 if(f.isDirectory())
                     s = s+"/";
                 System.out.println(name+","+version+","+pluginPath +s+",4,false");
             }
         }

} 

六篇关于我这个月的Eclipse定制就到此为止,希望能帮到人。

本文为原创文章,转载请保留原出处,方便溯源,如有错误地方,谢谢指正。
本文地址 :http://www.cnblogs.com/lovesong/p/4694757.html

时间: 2024-10-07 18:26:05

定制Eclipse IDE之杂症篇的相关文章

定制Eclipse IDE之插件篇(一)

上文回顾:定制Eclipse IDE之功能篇(二) 在这篇文章中,我会将我定制eclipse用到的其他插件罗列出来. 一.汉化插件 Eclipse本身是英文显示的,我们能够通过插件汉化. 1. 选择对应的Eclipse版本. 下载地址:http://www.eclipse.org/babel/downloads.php 2. 选择需要下载的语言 3.解压后直接拷贝到Eclipse的dropins目录即可. 二.打开文件夹位置插件 点击工程或工程文件时候,可以直接打开目录位置. 下载地址:http

定制Eclipse IDE之功能篇(二)

上文回顾:定制Eclipse IDE之功能篇(一) 这一篇文章将记录一些Eclipse插件小功能,Smart but Useful. 一.设置工作空间 文本文件的编码 解决办法: 在org.eclipse.ui.startup拓展里执行这一句(只需执行一次): ResourcesPlugin.getPlugin().getPluginPreferences().setValue("encoding", "UTF-8"); 二.默认显示行号 解决办法: 在org.ec

定制Eclipse IDE之插件篇(二)

上文回顾:定制Eclipse IDE之插件篇(一) 延续上一篇的插件篇,这一篇将会讲到一个最关键的插件aptana. 一.aptana插件 官方的解释我就不说了,从下面图可以看到插件提供了什么功能,列举一些我觉得重要的. 1. Contnet Assist : 代码提示 2. Editors:5种文件编辑器 3. Themes : 主题 4. Validation : 代码校验 提供这几点能力直击我eclipse前端开发的要害,就决定使用,下面是我对aptana做的一些调整. 1. 下载apta

定制Eclipse IDE之功能篇(一)

上文回顾:定制Eclipse IDE之界面篇 这一篇文章将记录一些Eclipse插件拓展(extension),简单讲述常用拓展的用法,但可能不会那么详细. 我的主要插件的拓展如下: 一.org.eclipse.ui.startup 这一个拓展可以说很关键,他可以让我们在eclipse启动时候做一些事件(之后很多小功能东西依靠它做的). XML配置: <extension point="org.eclipse.ui.startup"> <startup class=&

定制Eclipse IDE之界面篇

为什么要定制IDE? 在工作时候,当公司有了自己的框架,给自己开放人员用,甚至是可以卖的时候,我们可以做成一个产品,而这个产品将包括框架本身.文档.工具.教程等等.工具之中最重要的莫过于开发工具(IDE).调试工具. 我在公司里面做的是一个hybrid框架,而一个配套的IDE是比不可少的,主要用来开发HTML5.这个IDE可以算是框架东西的聚合,可以将在线文档.工程模板.打包调试等功能都揉合在IDE.当我们提供给开发者东西时,我们只需要提供一个IDE,里面已经包含所有框架的东西. 我花费了一个月

Eclipse - 定制Eclipse IDE之界面篇

为什么要定制IDE? 在工作时候,当公司有了自己的框架,给自己开放人员用,甚至是可以卖的时候, 我们可以做成一个产品,而这个产品将包括框架本身.文档.工具.教程等等.工具之中最重要的莫过于开发工具(IDE).调试工具. 目前apicloud或dcloud这些hybrid框架都是基于Eclipse做定制的,只不过dcloud做得比较彻底. 怎么定制IDE? 我们之所以能够定制Eclipse IDE,并不是我们写的东西有多厉害, 而是Eclipse的本身,它是一个平台,能够让我们编写插件拓展功能,达

Maven、gradle、Ant、Eclipse IDE

Maven.gradle.Ant.Eclipse IDE之间的关系 http://wenku.baidu.com/view/d33208810912a21615792910.html?from=search 觉得应该很多同学有和我一样的疑惑,所以分享下. 1.使用github上的开源项目时是不是经常发现有个叫maven的东西? 2.第一次使用Android studio时是不是要下载一个gradle的玩意? 折腾了一天,想导入下github的客户端源码.当然现在还没成功...各种看不懂的错误.郁

Maven、gradle、Ant、Eclipse IDE,ADT,intellij IDEA

(1)Maven.gradle.Ant.Eclipse IDE之间的关系 觉得应该很多同学有和我一样的疑惑,所以分享下. 1.使用github上的开源项目时是不是经常发现有个叫maven的东西? 2.第一次使用Android studio时是不是要下载一个gradle的玩意? 折腾了一天,想导入下github的客户端源码.当然现在还没成功...各种看不懂的错误.郁闷为什么他们弄这些高端玩意干嘛,我们平时eclipse里面不一样的好好的开发吗. 幸好无意间发现网上这篇回答,豁然开朗. "一般而言.

如何创建支持Eclipse IDE的Maven项目

使用Maven创建的项目是不支持任何IDE的,不能导入IDE中,因为项目格式都不符合特定IDE的格式要求,那么如何创建符合IDE要求的项目呢? 1.使用mvn eclipse:eclipse 命令把项目转换成支持Eclipse IDE的项目. 2.使用mvn idea:idea 命令把项目转换成支持IntelliJ IDEA的项目. 以下只说明如何将Maven项目转成Eclipse IDE支持的项目. 1.进入项目的根目录,也就是项目的pom.xml所在的目录,然后执行命令 mvn eclips