上文回顾:定制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

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

  1. 定制Eclipse IDE之插件篇(二)

    上文回顾:定制Eclipse IDE之插件篇(一) 延续上一篇的插件篇,这一篇将会讲到一个最关键的插件aptana. 一.aptana插件 官方的解释我就不说了,从下面图可以看到插件提供了什么功能,列 ...

  2. 定制Eclipse IDE之插件篇(一)

    上文回顾:定制Eclipse IDE之功能篇(二) 在这篇文章中,我会将我定制eclipse用到的其他插件罗列出来. 一.汉化插件 Eclipse本身是英文显示的,我们能够通过插件汉化.  1. 选择 ...

  3. 定制Eclipse IDE之功能篇(二)

    上文回顾:定制Eclipse IDE之功能篇(一)   这一篇文章将记录一些Eclipse插件小功能,Smart but Useful.   一.设置工作空间 文本文件的编码   解决办法: 在org ...

  4. 定制Eclipse IDE之功能篇(一)

    上文回顾:定制Eclipse IDE之界面篇   这一篇文章将记录一些Eclipse插件拓展(extension),简单讲述常用拓展的用法,但可能不会那么详细. 我的主要插件的拓展如下:   一.or ...

  5. 定制Eclipse IDE之界面篇

    为什么要定制IDE?      在工作时候,当公司有了自己的框架,给自己开放人员用,甚至是可以卖的时候,我们可以做成一个产品,而这个产品将包括框架本身.文档.工具.教程等等.工具之中最重要的莫过于开发 ...

  6. Eclipse IDE for C/C++ Developers安装配置详解

    Eclipse IDE for C/C++ Developers安装配置详解(转) 转自:http://hi.baidu.com/ltb6w/item/986532efd712460f570f1ddc ...

  7. Maven、gradle、Ant、Eclipse IDE

    Maven.gradle.Ant.Eclipse IDE之间的关系 http://wenku.baidu.com/view/d33208810912a21615792910.html?from=sea ...

  8. Eclipse IDE for C/C++ Developers和MinGW安装配置C/C++开发学习环境详解

    Eclipse IDE for C/C++ Developers和MinGW安装配置C/C++开发学习环境详解 操作系统:Windows 7 JDK版本:1.6.0_33 Eclipse版本:Juno ...

  9. 最新 Eclipse IDE下的Spring框架配置及简单实例

    前段时间开始着手学习Spring框架,又是买书又是看视频找教程的,可是鲜有介绍如何配置Spring+Eclipse的方法,现在将我的成功经验分享给大家. 本文的一些源代码来源于码农教程:http:// ...

随机推荐

  1. 本机搭建zookeeper集群

    3个 clientPort分别设置为2181,2182,2083 server.1=127.0.0.1:2888:3888 server.2=127.0.0.2:2889:3889 server.3= ...

  2. [转载]TFS源代码管理

    以下主要描述了: TFS源代码控制系统的基本场景 如何把一个项目添加到源代码管理中 如何与服务器同步 如何做Check-In 如何做分支与合并 什么是上架与下架 我们知道工作项是项目管理的基本元素,但 ...

  3. Spark入门实战系列--5.Hive(下)--Hive实战

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.Hive操作演示 1.1 内部表 1.1.1 创建表并加载数据 第一步   启动HDFS ...

  4. JavaScript 回忆录

    作者:禅楼望月(http://www.cnblogs.com/yaoyinglong) 1. 基本类型和应用类型 1.1 复制变量值的不同 值类型的变量在复制变量值后互不影响,因为值类型本身保存的就是 ...

  5. Elasticsearch之_default_—— 为索引添加默认映射

    前篇说过,ES可以自动为文档设定索引.但是问题也来了——如果默认设置的索引不是我们想要的,该怎么办呢? 要知道ES这种搜索引擎都是以Index为实际的分区,Index里面包含了不同的类型,不同的类型是 ...

  6. SQL Server安全(7/11):使用跨数据库所有权链接(Cross-Database Ownership Chaining)的跨数据库安全

    在保密你的服务器和数据,防备当前复杂的攻击,SQL Server有你需要的一切.但在你能有效使用这些安全功能前,你需要理解你面对的威胁和一些基本的安全概念.这篇文章提供了基础,因此你可以对SQL Se ...

  7. 用Latex写学术论文: IEEE Latex模板和文档设置(\documentclass)

    1.可以在博客园中使用latex代码输出公式,以后再以不用复制图片粘贴啦: http://www.cnblogs.com/cmt/p/3279312.html 例如以下代码两边加上 $ 符号后 x(k ...

  8. UI自动化测试框架(项目实战)python、Selenium(日志、邮件、pageobject)

    其实百度UI自动化测试框架,会出来很多相关的信息,不过就没有找到纯项目的,无法拿来使用的:所以我最近就写了一个简单,不过可以拿来在真正项目中可以使用的测试框架. 项目的地址:https://githu ...

  9. 解决:HTML中多文本域(textarea)回车后数据存入数据库,EL表达式取出异常。

    问题描述: 当多文本域(textarea)回车后数据存入数据库. EL表达式取出异常,值换行倒置页面报错. 问题解决: 存值脚本代码,提交前转换\n为<br/>. <script t ...

  10. 【转】Xml序列化

    XML序列化是将对象的公共属性和字段转换为XML格式,以便存储或传输的过程.反序列化则是从XML输出中重新创建原始状态的对象.XML序列化中最主要的类是XmlSerializer类.它的最重要的方法是 ...