建立基于Equinox的OSGi编译与调试环境

       在上一篇博客中我按照书中介绍搭建了第一种开发环境(控制台形式,用jar方式启动);现在我们继续跟着书上搭建第二种开发环境,在《深入理解OSGi---Equinox原理、应用于最佳实践》第111页出现了一个对话框,书中提示让我们打开这个对话框使用Software Site添加Bundle,可是对于第一次开发osgi的人来说,这个对话框从哪里打开的却不清楚,书中介绍的不够详细。从书中新建第一个osgi项目时,曾提起过要使用Plug-in project来创建,如果你在eclipse点击”new“--》”project“,没有出现Plug-in project的话,你可能得必须先去”Help“--》”Install New Software“里面先装一个”Plug-in Development“,装完后如下图所示:

建立基于Equinox的OSGi编译与调试环境

     

       装完后,就可以按照如下步骤找到第111页所示”Add Content“对话框了

     

     第一步:打开eclipse的“window”菜单,选择”preference“,在弹出的对话框中的左侧选择”Plug-in Development“,再点击”Target Platform“,点击右边的”add“,如下图

建立基于Equinox的OSGi编译与调试环境

        第二步:接下来点击next,如下图
建立基于Equinox的OSGi编译与调试环境
     
     第三步:接下来在下面图中”Name“处起一个名字,例如Equinox SDK Luna-SR2,在”Locations“选项卡下面点击右边的”add“
建立基于Equinox的OSGi编译与调试环境
    
      第四步:接下来就和书中同步了,图片一模一样了:
建立基于Equinox的OSGi编译与调试环境
    
      后面就和书中一样了,按照书上来做就行,不过一定要在Equinox官网http://download.eclipse.org/equinox/下载与自己eclipse版本对应的equinox。
 
      另外书中还例举了第三种方式来搭建开发环境,即下载equinox源码;第112页书中说eclipse基金会的配置库可以从cvs、svn、git三种途径获得,书中用的是cvs,刚开始我也用cvs,结果报错了Could not connect to :pserver:[email protected]:/cvsroot/rt: I/O exception:connection refused,no such repository.。然后去eclipse官网查看,官方通告cvs仓库资源已经迁移到git了,怪不得,然后我又去git库下载,发现equinox项目结构已经变化非常大了,和书中所示的项目结构出入很大。所以已经没能搭建第三种方式,其实第三种方式用的是 org.eclipse.equinox.launcher.Main这个启动类,在高版本的eclipse中已经没有这个类了,我用的是eclipse-4.4.2-luna-SR2,我在一个专门搜索”类在哪个jar包“的网站----http://www.docjar.com,搜到了两个jar:

建立基于Equinox的OSGi编译与调试环境

        你们感兴趣可以下载下来放到项目的lib文件夹下,再”configure build path“添加到类路径中,然后在所要运行的项目上右键点击”Run as“---》”configuration“,在左侧双击”Java Application“,会出现一个弹框让你选择一个启动类,看看是否会出现org.eclipse.equinox.launcher.Main这个类,如果有这个类,则选中,以后运行就可以通过这个配置项了,而不用OSGi Framework的方式了。
 
       在第94页,书中测试远程服务时使用了Apache CXF框架的bundle,你在启动这个bundle时可能会报Cannot create ConcurrentHashMap - neither JDK 1.5 nor backport-concurrent available on the classpath;这是jdk版本不兼容造成的,我当时也出现这个错误,我本来用的是jdk1.8,换成1.7,编译环境改成jdk1.6就OK了。