博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Eclipse插件引入jar包的方法(转)
阅读量:5739 次
发布时间:2019-06-18

本文共 1234 字,大约阅读时间需要 4 分钟。

 

搞了两天,终于找到解决办法了。原来  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包。然后在需要的插件里依赖前插件,即可。这样配置相对灵活一点。

 

 

转载于:https://www.cnblogs.com/softidea/p/4271287.html

你可能感兴趣的文章
Linux 平台安装pgbouncer说明文档
查看>>
linux 压缩解压命令
查看>>
Cacti获取服务器TCP并发连接数(cacti windows版)
查看>>
Tomcat处理配置Server: Tomcat version 5.5 only supports J2EE 1.2, 1.3, and 1.4 Web modules
查看>>
PHP计算年龄的函数
查看>>
我的友情链接
查看>>
AIX操作系统卷组故障维护
查看>>
实战模拟监控MySQL服务shell脚本小结
查看>>
学员参观IDC机房及实操实践活动
查看>>
linux常用命令之cat使用方法
查看>>
自己动手,丰衣足食!自己写的网工工具:子网掩码转换器
查看>>
ORACLE正则表达式
查看>>
我的友情链接
查看>>
如何将px换成em,px与em区别是什么?
查看>>
RealPlayer 15正式发布 简体中文版下载
查看>>
51cto推动者社区
查看>>
我的友情链接
查看>>
Linux下搭建DNS服务
查看>>
关于NoClassDefFoundError和ClassNotFoundException异常
查看>>
产品成佛,架构成魔
查看>>