本帖最后由 anrainie 于 2013-7-23 11:31 编辑

对于eclipse插件开发的新手,经常会遇到插件写好了,拷贝到plugins或dropins文件下,但是没有生效。上网各种问,也很难找到正确的答案。
事实上,自己现场处理,会更快的得到答案,和提高自己解决问题的能力。
现在我说下一下如何应用一个插件:

1、在插件环境下测试。

选择debug按钮下的run Configuration(调试 配置),选中Argument。读一下英文,就可以明白这里是配置虚拟机和eclipse的启动参数,后面我会说明在“应用环境”下要怎么使用这些参数

<ignore_js_op>

在program arguments中加入两个参数:
-console  打开控制台
-consoleLog 控制台打印Log信息

这两个都是给你调试用的,请养成使用控制台的习惯。
配置好之后,选择Plugin-in标签,如下图:
<ignore_js_op>

读英文,注意Launch with,如果你是新手,推荐选择all workspace and enable target plug-in
这样就会加载所有的插件,自然包括你写的那个。

选择之后,点击下面的debug(调试)按钮
看效果。
注意!我上面强调了两次读英文,英语是编程需要的基本能力,eclipse又是一个说明很详细的IDE,事实上,你能在网上找到的大部分教程内容,都不一定比eclipse自带的Help Contents详细。养成良好的编程习惯,先把UI上提供的东西都读一遍,再决定是不是要“搜索”或者“问”。

2、在应用环境下使用通过了上一步测试的插件

要确定几点:
a、你的开发环境和你的应用环境是不是一致?
b、你是不是已经打包了好所有你需要的资源?

如何检查呢?
其实都是一些配置信息。主要是检查两个文件:manifest.mf和build.properties。某些特殊情况下可能还要检查plugin.xml,暂不讨论。
eclipse提供了完整的配置工具。

首先是build,看下图:
<ignore_js_op>

左侧的描述说了“选择字节码构建的文件夹和文件”
就是说,你打包的时候,选择的这些文件才会被加入到jar中去。
所以,如果你添加了lib或者其他的配置文件什么的,请不要忘记在build中选上。

然后是manifest.mf
这里声明了本插件依赖的包和插件,本插件开放的包(其中可以含有各种约束规则,暂不讨论),本插件的jre环境,基本的插件信息,等等。
这里要注意的是你的“开发环境”具备的包和插件,在你的“应用环境”上是不是具备?

主要是三个:
1、依赖的包 Require-Bundle:
2、依赖的插件 Import-Package:
3、jre版本 Bundle-RequiredExecutionEnvironment:

解决方式是:为应用环境添加上所有缺失的插件。

当然,80%的环境错误,都是版本不一致导致的

你可以尝试去掉或修改版本信息
比如Require-Bundle:  org.eclipse.ui.ide;bundle-version="3.6.1"
修改为Require-Bundle:  org.eclipse.ui.ide

又比如:
Bundle-RequiredExecutionEnvironment: JavaSE-1.7

换成
Bundle-RequiredExecutionEnvironment: JavaSE-1.6

3、在应用环境下后台调试

当你把插件拷贝到应用环境的plugins或者dropins下面后,你再也没办法对它debug了。
如果一个插件加载不成功,它的加载信息会显示在.configuration的log文件中,且,在Help-> About Eclipse里也会有全部的已安装插件信息。
但是,这样就足够了吗?
一个插件,没有产生效果,又没有具体的报错,不知道安装好了没有,我们还有任何办法吗?

答案当然是肯定的。
我们需要利用osgi(equinox)的后台console。

记得之前我说的Eclipse启动参数-console吗?
在应用环境下我们也可以使用该参数,如果你使用的linux,我就不赘述如何添加参数了。
在windows环境下,给Eclipse执行文件创建一个快捷方式,右键属性,在“目标”里的文件后再加上一个-console参数
Eclipse就以console模式启动了,在Eclipse的splash弹出来的同时,也会弹出一个osgi后台,如下图:<ignore_js_op>

使用
ss命令可以查看所有的插件
ss后面可以写查询条件

比如
ss org.*
就是找到所有以org.开头的插件(注意,这里的名称插件名称,而非项目名)

如果能够找到你需要的插件,则你能看到该插件的ID号。
使用start [id] 命令,可以启动该插件,看看是否报错。
注意:在osgi bundle的生命周期中,started和[lazy]才表示它是可以正常使用的

在某些特别的情况下该插件没有被installed,则你需要install命令来安装它。
install命令后面的参数需要是一个完整的URL
如果不理解URL格式怎么写,请百度之。

更多console的介绍可以看这里:
http://www.ibm.com/developerworks/library/os-ecl-osgiconsole/

理解了以上,你就掌握了基本的插件调试技能。

如何自行处理写好的eclipse插件安装不生效的更多相关文章

  1. 常用的4个eclipse插件安装过程及使用方法

    最近整合了4个常用eclipse插件安装过程,分别是PMD.checkstyle.findbugs.sourcemonitor插件.因为我这里没有外网,所以所有的插件不是最新版,建议有网的童鞋自行在外 ...

  2. JAVAEE——SSH项目实战01:SVN介绍、eclipse插件安装和使用方法

    1 学习目标 1.掌握svn服务端.svn客户端.svn eclipse插件安装方法 2.掌握svn的基本使用方法 2 svn介绍 2.1 项目管理中的版本控制问题 通常软件开发由多人协作开发,如果对 ...

  3. (转载)eclipse插件安装的四种方法

    eclipse插件安装的四种方法 Eclipse插件的安装方法 1.在eclipse的主目录(ECLIPSE_HOME, 比如在我的机器上安装的目录是:D:\eclipse)有一个plugins的目录 ...

  4. Android模拟神器Genymotion eclipse插件安装问题出解决

    我之前一直是打开eclipse之前直接运行Genymotion模拟器就可以连接到adb了,非常方便,但最近突然想来装个eclipse的Genymotion插件玩玩,安装时居然出错了,于是不折腾好心里不 ...

  5. jBPM 6 开发 eclipse 插件安装

    jBPM 6 开发 eclipse 插件安装 概述 与之前的jBPM 5相比,jBPM 6 新引入的kjars及mavenized的特性,使流程开发设计与之前有了很大的不同,本文主要说明jBPM 6 ...

  6. Eclipse插件安装方法大全

    1. M2e maven2插件安装 参考地址:http://www.sonatype.com/books/m2eclipse-book/reference/install-sect-marketpla ...

  7. eclipse插件安装验证及问题处理

    eclipse插件安装验异常时可看当前workspace下面的.metadata/.log文件,找到具体的问题来处理.一般常用到插件安装不成功的原因如下: 1.jar包冲突: 2.jar包依赖的jav ...

  8. genymotion 和genymotion eclipse 插件安装 !

    昨天天有好心网友在群里共享了一个好用的 android 模拟器 genymotion 昨天就试用了下 真心流畅 各位不妨一试 http://www.genymotion.com/ doc https: ...

  9. eclipse插件安装 (zhuan)

    https://my.oschina.net/gxs2012/blog/205875 http://blog.csdn.net/zhujiaxing666666/article/details/150 ...

随机推荐

  1. 哈哈,修改PHP5.4.44语法成功

    作为一个脚本语言,面向对象的继承基本上不想用到,强类型比较也想使用==直接比较.作为专业程序员不想让PHP解释器代劳过多. 修改了这个MOD版本,效果杠杠的.

  2. advanced validation on purchase.

    安装模块 此模块在 标准功能的 2级审批基础上 增加 老板审批 增加 不同技术类和 非技术类的分支 核心审批工作流 如下图示 为审批用户 授予 purchase manager 权限 否则,看不到 审 ...

  3. 20145226夏艺华 《Java程序设计》第0周学习总结

    关于师生关系: 学生和老师之间我觉得关系时多元化的,不能拘泥于单独的一种关系:灌输与被灌输,教授与被教授--我认为,在不同的课程阶段,师生之间的关系都可以发生变化.前期的老师更像是一个指路的人,而在入 ...

  4. 新版Xcode无法新建iOS空项目解决方案

    --感谢同学分享-- 操作说明: 拷贝Empty Application.xctemplate文件夹至   /Contents/Developer/Platforms/iPhoneOS.platfor ...

  5. 二 Java利用等待/通知机制实现一个线程池

    接着上一篇博客的 一Java线程的等待/通知模型 ,没有看过的建议先看一下.下面我们用等待通知机制来实现一个线程池 线程的任务就以打印一行文本来模拟耗时的任务.主要代码如下: 1  定义一个任务的接口 ...

  6. hashcode深入理解

    带着问题去理解: 1. Object类HashCode方法是如何实现的,和String类有什么区别? 2.HashCode和Equals之间的关系? 一.hashCode作用 hashCode方法返回 ...

  7. 【洛谷P3143】Diamond Collector

    算是一道dp 首先,排序好每一个架子上都是一段区间,然后只需要统计每个点向左向右最长延伸的区间. 所以我们预处理出每个点以左.以右最大能延伸的长度(最多能选几个差值不超过k的) 然后枚举每个点作为断点 ...

  8. Markdown示例

    欢迎使用 Cmd Markdown 编辑阅读器 我们理解您需要更便捷更高效的工具记录思想,整理笔记.知识,并将其中承载的价值传播给他人,Cmd Markdown 是我们给出的答案 -- 我们为记录思想 ...

  9. java程序操作Geometry对象

    Geometry 空间地理对象,Oracle中存储Geometry对象的字段类型是 MDSYS.SDO_GEOMETRY,在数据库中构建Geometry对象的方法: v_pointarray MDSY ...

  10. 导致人生失败的31种原因(转自csdn博客)

    人生的最大悲剧,就是孜孜不倦的努力却终于失败! 美国一位学者曾经分析了数千人的经历,结果是总人数的98%都是失败者.并由此归纳了人们失败的主要原因,有31种之多.当你逐项阅读它们时,要一一检查自己,以 ...