搞了两天,终于找到解决办法了。原来  Eclipse 插件项目引入外面的jar包不能用   build path---->add external jars的方法。

先说明两个概念:类加载器,OSGI

类加载器(class loader),顾名思义就是JVM用于加载类的一个工具。当然,它本身也是一个java类,见java.lang.ClassLoader。它维护内部的类名空间,相互关系(域),并为它们隔绝外部侵害。

OSGI,Open Service Gateway Initiative,则是一个开放的架构,主要特性包括热插拔,bundle独立等。现版本的eclipse就是基于这个架构实现的,而eclipse实现OSGI主要途径,就是通过为每个bundle分配一个独立的classloader,然后使用MANIFEST.MF文件的配置,来维护这些bundle之间的关系。

比如一行代码:

Platform.getBundle(BUNDLE_ID)

这就是获得BUNDLE_ID的classloader的途径,通过它来调用bundle(插件)里面的类的方式和反射调用的方式一致。

正题:

如何在一个插件里引用jar包?有一些新学eclipse插件开发的朋友,往往会把需要用到的jar包添加到项目的运行环境里面,这种做法虽然在eclipse编辑器编辑的时候不会出现问题,但一旦运行程序,就难免出现无法初始化类,或者找不到类的情况。

这就是因为,各bundle间的classloader是独立的,在项目运行时添加的jar包,并没有加载到本bundle的classloader中来,当然就会出现这种错误了。

两种方案解决这个问题(本文使用的是eclipse 3.7):

1、如果一个jar包的使用范围仅在本插件内部,那么可以在MANIFEST.MF中选择runtime签页,找到classpath区域,如图:

点击“Add”按钮,弹出如下对话框:

在这里选择你要添加的jar包即可。

注意!add向导里显示的文件、文件夹只有本插件下的内容,所以,你需要创建一个“lib”文件夹,把需要的jar放置在其下(文件夹命名为lib是约定俗成的做法,如非必要,勿标新立异)。

2、如果一个jar包需要被多个插件引用,方案1就显得麻烦了。可以采用jar包插件化的方法来实现公用的jar引用。

快捷键ctrl+N创建新"others",选择

接下来按提示操作即可,这样就生成了一个jar包插件。在你需要的位置依赖它即可。

-------------------------

3、虽然只列了两点,但其实还是有方式三的。即是结合上两点,首先在classpath中引用jar包,然后在export package中开放这些jar包。然后在需要的插件里依赖前插件,即可。这样配置相对灵活一点。

http://www.cnblogs.com/wangjiyuan/p/jar.html

Eclipse插件引入jar包的方法(转)的更多相关文章

  1. Eclipse插件引入jar包的方法

    搞了两天,终于找到解决办法了.原来  Eclipse 插件项目引入外面的jar包不能用   build path---->add external jars的方法. 先说明两个概念:类加载器,O ...

  2. Maven工程引入jar包

    Maven项目引入jar包的方法 法一.手动导入:项目右键—>Build Path—>Configure Build Path—>选中Libraries—>点击Add Exte ...

  3. Maven工程引入jar包(转)

    Maven项目引入jar包的方法,希望能帮助有需要的朋友们 法一.手动导入:项目右键—>Build Path—>Configure Build Path—>选中Libraries—& ...

  4. Eclipse引入jar包的三种方式

    引用自 http://chenxu.wo.blog.163.com/blog/static/50239687201162310620634/ 使用Eclipse开发应用程序,少不了使用第三方jar包, ...

  5. eclipse javaWeb项目如何引入jar包

      eclipse javaWeb项目如何引入jar包 CreateTime--2018年4月19日08:54:24 Author:Marydon 1.判断当前jar包是否已经引入到项目当中的3种方式 ...

  6. 【转】Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法)

    原文网址:http://www.blogjava.net/anchor110/articles/355699.html 1.在工程下新建lib文件夹,将需要的第三方包拷贝进来.2.将引用的第三方包,添 ...

  7. Eclipse中的工程引入jar包后没有整合到一个文件夹而是全部在根目录下显示

    Eclipse中的工程引入jar包后没有整合到一个文件夹而是全部在根目录下显示 解决方案: 1,在Eclipse中,点击window-->Preferences-->Java-->B ...

  8. 【eclipse插件开发实战】Eclipse插件开发7——插件发布jar包

    Eclipse插件开发7--插件发布jar包 最省事的方式就是直接导出jar包,然后放到eclipse的plugins目录下,重启eclipse即可. step1: 对需要打包的插件工程右击→导出(E ...

  9. 【Java_SSM】(四)Eclipse中通过maven引入jar包

    这篇博文我们介绍一下如何通过eclipse配置setting并引入jar包 (1)eclipse:Window--Preferences--Maven--User Setting 全部完成后点Appl ...

随机推荐

  1. SuperSocket源码解析之消息处理

    一 简述 Tcp消息的处理本身是与Tcp消息传输过程独立的,是消息的两个不同阶段,从前面的会话生命周期我们已经知道消息的传输主要有SocketSession实现,而真正处理则交由AppSession实 ...

  2. ie6下常见的bug 调整页面兼容性

    ie6下常见的bug 我们布局页面,首先符合标准,如何写一个页面的标准性? 但是ie6等浏览器本身就比较特殊,bug比较多,兵法云,知己知彼百战百胜.我们需要了解ie6的一些常见bug,这样,更好的调 ...

  3. Jquery moblie中的分栏布局

    大家好,很高兴又与大家见面了,今天我要给大家展示的是自己对jquery  moblie中网格布局的理解.可能不是尽善尽美,希望大家多多体谅! 在jquery moblie中有两种布局,一种是表格布局( ...

  4. perl 面向对象 new方法

    [root@wx03 test]# cat Scan.pm package Scan; sub new{ my $class = shift; my $self={ 'a'=>11, 'b'=& ...

  5. OGR 官方文档

    OGR 官方文档 http://www.gdal.org/ogr/index.html The OGR Simple Features Library is a C++ open source lib ...

  6. Swift - 获取字符串的MD5值

    MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法),主流编程语言普遍已有MD5实现. ...

  7. WCF技术剖析之二十一:WCF基本异常处理模式[下篇]

    原文:WCF技术剖析之二十一:WCF基本异常处理模式[下篇] 从FaultContractAttribute的定义我们可以看出,该特性可以在同一个目标对象上面多次应用(AllowMultiple = ...

  8. 大白痴学习webmagic

    摘要 webmagic 学习 从头 刚刚开始学,很多东西可能理解错了,还请各位指教 一些基本类: Request:包含要爬行的url和一些附加信息,是Page的一个成员变量 主要成员变量 String ...

  9. 在O(1)时间删除指定链表结点

    #region 在O(1)时间删除指定链表结点 /// <summary> /// 给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点. /// </summa ...

  10. v$lock 视图访问慢解决方法

    V$ 视图访问慢 --解决方法 分析:可能是有数据字典统计信息过久,造成. exec dbms_stats.gather_fixed_objects_stats; ------收集所有数据字典的fix ...