永发信息网

如何在插件开发中正确使用第三方jar包

答案:3  悬赏:10  手机版
解决时间 2021-02-14 18:54
如何在插件开发中正确使用第三方jar包
最佳答案
解决过程   在一般插件项目中添加第三方jar包:   1. 创建你的插件项目,并新建一个文件夹放置你需要的第三方jar包,如:/lib。   2. 从文件系统中导入或拷贝jar包至/lib文件夹中,如:/lib/activation.jar。   3. 打开MANIFEST.MF文件,在插件编辑器的"Runtime"Tab页中,把第三方jar包添加到"Classpath"面板中。   haha@sh 2011年04月21日 13:46   4. 如果该插件需要被其他插件依赖,则需要在插件编辑器的"Runtime"Tab页中,在"Exported Packages"面板中添加所有允许访问的包。
全部回答
在一般插件项目中添加第三方jar包: 1. 创建你的插件项目,并新建一个文件夹放置你需要的第三方jar包,如:/lib。 2. 从文件系统中导入或拷贝jar包至/lib文件夹中,如:/lib/activation.jar。 3. 打开MANIFEST.MF文件,在插件编辑器的"Runtime"Tab页中,把第三方jar包添加到"Classpath"面板中。 4. 如果该插件需要被其他插件依赖,则需要在插件编辑器的"Runtime"Tab页中,在"Exported Packages"面板中添加所有允许访问的包。 通过图形界面编辑器配置后的MANIFEST.MF文件如下: Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Primeton Studio EosTest Core Plug-in Bundle-SymbolicName: com.primeton.studio.eostest.core Bundle-Version: 6.0.0 Bundle-Vendor: %Primeton Bundle-Localization: plugin Bundle-ClassPath: lib/activation.jar, lib/jaxb-api.jar, lib/jaxb-impl.jar, lib/jsr173_1.0_api.jar Export-Package: com.primeton.studio.eostest.core, com.primeton.studio.eostest.core.model.cut, ... javax.activation, javax.xml.bind, javax.xml.bind.annotation, javax.xml.bind.annotation.adapters, javax.xml.bind.attachment, javax.xml.bind.helpers, javax.xml.bind.util, javax.xml.stream, javax.xml.stream.events, javax.xml.stream.util Require-Bundle: com.primeton.studio.runtime, org.eclipse.core.resources 构建插件项目: 5. 打开build.properties文件,在插件编辑器的"Build"Tab页的"Binary Build"面板中,选中需要构建的内容。 生成的build.properties文件如下: output.. = bin/ bin.includes = META-INF/,\ plugin.xml,\ lib/jaxb-api.jar,\ lib/jaxb-impl.jar,\ lib/jsr173_1.0_api.jar,\ lib/activation.jar,\ plugin.properties,\ plugin_zh_CN.properties src.includes = META-INF/,\ src/,\ plugin.properties,\ plugin.xml,\ plugin_zh_CN.properties,\ build.properties 在插件项目B中引用一个插件项目A的类: 6. 首先,需要保证该类所在的包在插件A的MANIFEST.MF文件Export-Package:中,如上步骤4。 7. 其次,打开插件项目B的MANIFEST.MF文件,在插件编辑器的"Dependencies"Tab页中,把插件项目A添加到"Required Plug-ins"面板中。如果仅仅是在插件项目B的"Java Build Path"添加了插件项目A,则运行时肯定会出现运行时"NoClassDefFoundError"问题。 导出插件项目: 8. 选中插件项目,在导出向导里选中"Deployable plug-ins and fragments"选项导出。 9. 导出的插件分为三种形式,文件夹、zip包、jar包。导出的内容包括在上面插件项目构建步骤中,build.properties文件bin.includes中选中的内容。 10. 其中jar包的形式需要在"Options"选项里选中"Package plug-ins as individual JAR archives"选项。 将第三方jar包单独包装成一个插件项目: 另外对于项目中使用到大量的第三方jar包时,可以采用eclipse官方推荐的方式,把第三方jar单独包装成一个插件项目。 按Ctrl+N,在新建对话框里选择"Plug-in from existing JAR archives",按下一步选择你需要的jar文件。 再下一步指定这个plugin的名称,注意这一步里一般要把最下面的"Unzip the JAR archives into the project"选项清除,否则eclipse会把jar文件全部展开为.class文件树,最后按Finish就可以了。
问题描述   很多开发人员在eclipse插件开发中,经常会遇到第三方jar包无法访问的问题,或者是明明在开发环境中一切正常,导出插件到了运行环境时却出现"noclassdeffounderror"异常等诸多问题。   本文结合笔者插件开发遇到的问题,谈谈插件开发过程中应该如何正确配置第三方jar包。   解决过程   在一般插件项目中添加第三方jar包:   1. 创建你的插件项目,并新建一个文件夹放置你需要的第三方jar包,如:/lib。   2. 从文件系统中导入或拷贝jar包至/lib文件夹中,如:/lib/activation.jar。   3. 打开manifest.mf文件,在插件编辑器的"runtime"tab页中,把第三方jar包添加到"classpath"面板中。   haha@sh 2011年04月21日 13:46   4. 如果该插件需要被其他插件依赖,则需要在插件编辑器的"runtime"tab页中,在"exported packages"面板中添加所有允许访问的包。   通过图形界面编辑器配置后的manifest.mf文件如下:   manifest-version: 1.0   bundle-manifestversion: 2   bundle-name: primeton studio eostest core plug-in   bundle-symbolicname: com.primeton.studio.eostest.core   bundle-version: 6.0.0   bundle-vendor: %primeton   bundle-localization: plugin   bundle-classpath: lib/activation.jar,   lib/jaxb-api.jar,   lib/jaxb-impl.jar,   lib/jsr173_1.0_api.jar   export-package: com.primeton.studio.eostest.core,   com.primeton.studio.eostest.core.model.cut,   ...   javax.activation,   javax.xml.bind,   javax.xml.bind.annotation,   javax.xml.bind.annotation.adapters,   javax.xml.bind.attachment,   javax.xml.bind.helpers,   javax.xml.bind.util,   javax.xml.stream,   javax.xml.stream.events,   javax.xml.stream.util   require-bundle: com.primeton.studio.runtime,   org.eclipse.core.resources   haha@sh 2011年04月21日 13:47   构建插件项目:   5. 打开build.properties文件,在插件编辑器的"build"tab页的"binary build"面板中,选中需要构建的内容。   生成的build.properties文件如下:   output.. = bin/   bin.includes = meta-inf/,\   plugin.xml,\   lib/jaxb-api.jar,\   lib/jaxb-impl.jar,\   lib/jsr173_1.0_api.jar,\   lib/activation.jar,\   plugin.properties,\   plugin_zh_cn.properties   src.includes = meta-inf/,\   src/,\   plugin.properties,\   plugin.xml,\   plugin_zh_cn.properties,\   build.properties   haha@sh 2011年04月21日 13:48   在插件项目b中引用一个插件项目a的类:   6. 首先,需要保证该类所在的包在插件a的manifest.mf文件export-package:中,如上步骤4。   7. 其次,打开插件项目b的manifest.mf文件,在插件编辑器的"dependencies"tab页中,把插件项目a添加到"required plug-ins"面板中。如果仅仅是在插件项目b的"java build path"添加了插件项目a,则运行时肯定会出现运行时"noclassdeffounderror"问题。   haha@sh 2011年04月21日 13:49   导出插件项目:   8. 选中插件项目,在导出向导里选中"deployable plug-ins and fragments"选项导出。   9. 导出的插件分为三种形式,文件夹、zip包、jar包。导出的内容包括在上面插件项目构建步骤中,build.properties文件bin.includes中选中的内容。   10. 其中jar包的形式需要在"options"选项里选中"package plug-ins as individual jar archives"选项。   haha@sh 2011年04月21日 13:52   配置feature项目:   我们在做类似这样的产品时,会创建一个feature项目用来描述所有的插件项目配置信息。如果我们将一个包含第三方类库jar包的插件导出成一个 jar包的形式,运行产品时不会出现任何问题,可一旦需要在该产品上进行二次插件开发时,则会出现无法访问插件jar包里的第三方jar包的问题。   在dev.eclipse.org上也搜索到同样的问题描述,估计是eclipse本身不支持访问jar包内的jar文件造成的:   "adding lib/my.jar meant the plugin will always be a directory instead of a jar (eclipse doesn't load jars from withing jars). by default, my plugin itself shows up as the "." library, which isn't included in a directory plugin that includes other jars."   因此需要将类似包含第三方jar包的插件 导出成文件夹的形式,具体步骤如下。打开feature.xml文件,在功能编辑器的"plug-ins"tab页,选中想要配置的插件,并 在"plug-in details"面板中,选中"unpack the plug-ins archive after the installation",这样在插件安装后会将插件解压成文件夹形式。   对于已经打成jar包的插件,也可以通过手动修改的方式实现。选中一个插件jar文件,解压成同名文件夹,将类包压缩成jar文件,如:swt.jar,并删除原先的类包。   修改meta-inf下的manifest.mf文件,如原先内容:   bundle-classpath: lib/ktable_2.1.3.jar,   .   则改成:   bundle-classpath: lib/ktable_2.1.3.jar,   swt.jar   即可。   将第三方jar包单独包装成一个插件项目:   另外对于项目中使用到大量的第三方jar包时,可以采用eclipse官方推荐的方式,把第三方jar单独包装成一个插件项目。   按ctrl+n,在新建对话框里选择"plug-in from existing jar archives",按下一步选择你需要的jar文件。   再下一步指定这个plugin的名称,注意这一步里一般要把最下面的"unzip the jar archives into the project"选项清除,否则eclipse会把jar文件全部展开为.class文件树,最后按finish就可以了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
苏诺特包装机械地址在哪,我要去那里办事
江苏苏中药业集团有限公司~~商务代表 工作性
海之特蚝门夜店烧烤店NO.1地址有知道的么?有
生产单克隆抗体时,需要对下列培养细胞进行选
南通贵帮机械地址有知道的么?有点事想过去
把友们看看我这鹦鹉身上是什么是寄生虫吗
为什么我车的USB接口插上手机原装充电器线以
目前烷基化油报价大约多少
第1次吃饭领导叫我敬酒,我不敬大家,因为我
生殖健康检验中心宫颈细胞学筛查基地地址好找
安徽水利东方国际会议中心(东门)我想知道这个
before dinner 之间要不要加the?
南京快递员一个月大概多少钱
有圆网但网破了一个口还有一条鱼走了出来,水
初中生怎么接吻最好
推荐资讯
色拉油又叫什么?
晨曦水晶磨珠材料店地址有知道的么?有点事想
日语依母集是什么意思
艾克帕尔镶牙店地址在哪,我要去那里办事
北宋、辽、西夏、金四个政权,按建立的时间顺
小学生学拉二胡好吗?
潮汕海鲜砂锅粥地址在什么地方,想过去办事
不可数英语单词
海绵是单细胞生物吗?、、
QQ如何用QQ视频录像器保存视频聊天记录
苏州市公共交通信息中心地址在哪,我要去那里
怡鉴斋怎么去啊,有知道地址的么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?